我从用户那里获取一个数组输入,并希望找到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