Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我从用户那里获取一个数组输入,并希望找到python中的第二大元素_Python - Fatal编程技术网

我从用户那里获取一个数组输入,并希望找到python中的第二大元素

我从用户那里获取一个数组输入,并希望找到python中的第二大元素,python,Python,我也试过分类,但也没用 print("Enter an array of numbers: ") a=[] for x in input().split(): a.append(x) a.remove(max(a)) print(max(a)) output: Enter an array of numbers: 10 150 30 20 20 通过映射功能获取的输入仍不工作 我可以迭代每一个数字并找出答案,但还有其他方

我也试过分类,但也没用

 print("Enter an array of numbers: ")
 a=[]                       
 for x in input().split():   
    a.append(x)

a.remove(max(a))
print(max(a))

output:

Enter an array of numbers: 
10 150 30 20
20
通过映射功能获取的输入仍不工作
我可以迭代每一个数字并找出答案,但还有其他方法吗?

你必须为字符串生成整数。如果没有它,您将无法对数组进行排序。 要转换,请使用
int()


另请参见最后一行-编写
a[-2]
而不是
a[len(a)-2]

它更像是一种python方式,因为数字是字符串格式的。这里有一个简单的解决方案

print("Enter an array of numbers: ")
a=[]                       

for x in input().split():   
    a.append(int(x))

a.sort()
print(a)
print(a[-2])

您应该使用
map
将所有输入的数字强制转换为
int
。由于
map
返回一个生成器实例,因此需要通过在
list()
sorted()
中调用它来使用它。像下面这样

a = ['5', '10', '2', '3']
b = [int(c) for c in a]
b.sort()
result = b[-2]

数组切片也接受负整数,即,-1代表最后一个元素,-2代表倒数第二个元素,以此类推。

对错误的描述不可接受“它不起作用”。再试一次。您没有将数字强制转换为
int
,因此出现了错误。因为它没有提供所需的输出,所以我使用了'not working'@ashishnitinpail如何做到这一点?@ashishnitinpail我对python完全陌生,所以…我对map使用sort(),它不断地抛出errorYes,因为
map
生成一个生成器实例,而不是
.sort()
所期望的
列表。
a = ['5', '10', '2', '3']
b = [int(c) for c in a]
b.sort()
result = b[-2]
>>> my_array = sorted(map(int, input("Enter an array of numbers: ").split()))
Enter an array of numbers: 10 150 20 30
>>> print(my_array[-2])
30