2016-11-03 4 views
0

Dieses Programm soll die zweitgrößte Zahl finden, die für die meisten Eingänge funktioniert, aber es funktioniert nicht für die folgenden Eingänge.

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) 

Antwort

1

Die Einstellung von large2 auf 0 verkompliziert die if-Anweisung erst später. Setze es auf den kleinsten Wert im Array und es wird klarer.

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) 

Beachten Sie, dass der Aufruf von min nicht trivial wird, wenn das Array groß ist. In diesem Fall könnten Sie large2 auf den kleinsten möglichen Wert setzen (in diesem Fall könnte this Link nützlich sein)

+0

danke für die info.i habe nicht genug Ruf das ist, warum meine Abstimmung wird nicht angezeigt. – eldhoittangeorge

Verwandte Themen