2017-03-17 26 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 )'期待。 –

相關問題