2017-03-17 24 views
-1
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.sort() 
print(a) 
print(a[len(a)-2]) 

output: 
Enter an array of numbers: 
10 150 20 30 
['10', '150', '20', '30'] 
20 

通过地图功能接过输入仍无法正常工作 我可以迭代每个数字,并可以找出,但有没有其他方式?

+0

“它没有工作”不是错误的可接受描述。再试一次。 – timgeb

+1

您不会将数字转换为“int”,因此会出现错误。 –

+0

那么,因为它没有给出所需的输出我用'不工作' –

回答

0

你必须做整数forom字符串。没有它你排序阵列lexicographically。 要转换,使用int()

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

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

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

也看到最后一行 - 这是写a[-2]而不是a[len(a)-2]更Python的方式。

1

它是因为数字是字符串格式。这是一个简单的解决方案。

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

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

>>> 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 

阵列切片也接受负整数,即-1代表最后一个元素,-2是第二最后等

+0

我使用排序()与地图,它一直抛出错误 –

+0

是的,因为'map'产生一个生成器实例,而不是'列表''.sort )'期待。 –

相关问题