2016-11-03 4 views
0

このプログラムは、ほとんどの入力に対して2番目に大きな番号を見つけることですが、次の入力に対しては機能しません。

n=4 
a1 = '-7 -7 -7 -7 -6' 
a1=[int(arr_temp) for arr_temp in a1.strip().split(' ')] 
print(a1) 
largest = max(a1) 
largest2 = 0 
for i in range(0,len(a1)): 
    if ((a1[i]>largest2 or a1[i]<0) and largest2<largest and a1[i]!=largest): 
     largest2 = a1[i] 
print(largest2) 

答えて

1

maximum2から0に設定すると、後でif文が複雑になります。配列の最小値に設定すると、より明確になります。

n=4 
a1 = '-7 -7 -7 -7 -6' 
a1=[int(arr_temp) for arr_temp in a1.strip().split(' ')] 
print(a1) 
largest = max(a1) 
largest2 = min(a1) 

for i in range(0,len(a1)): 
    if (a1[i] > largest2) and (a1[i] < largest): 
    largest2 = a1[i] 

print(largest2) 

配列が大きい場合、minへの呼び出しは重要ではないことに注意してください。その場合、できるだけ小さい値にできるだけ2を設定することができます(thisリンクが役立つかもしれません)

+0

info.iのおかげでありがとうございます。なぜ私の投票が表示されないのですか? – eldhoittangeorge

関連する問題