2016-07-20 5 views
-3

außer Reichweite habe ich ein seltsames Problem mit meinem Python-Codeseltsame Python Index

wenn ich testen Sie es mit:

4 
Prashant 
32 
Pallavi 
36 
Dheeraj 
39 
Shivam 
40 

es funktioniert gut, aber wenn ich versuche, es mit diesem zu testen:

5 
Harry 
37.21 
Berry 
37.21 
Tina 
37.2 
Akriti 
41 
Harsh 
39 

es mit diesem Fehler fehlschlagen:

Runtime error Traceback (die meisten r letzten Aufruf): Datei "solution.py", Zeile 48, in final = find (verschachtelt, gefunden (verschachtelt, Minimum (verschachtelt)) [0] [1]) IndexError: Listenindex außerhalb des Bereichs

Hier ist der Code, ich verstehe nicht, warum es zum Absturz bringen, ich versuche, viele différents Lösungen ohne Erfolg ..

def compteur (list,sch): 
    nb=0 
    for t in list: 
     if t[1] == sch: 
      nb += 1 
    return nb 

def minimum (list): 
    minim = list[0][1] 
    for t in list : 
     if t[1] < minim : 
      minim = t[1] 
    return minim 

def find (list,sch): 
    ret=[] 
    for t in list: 
     if t[1] == sch: 
      ret.append(t) 
     return ret 

def rmv (list,sch): 
    ret = [] 
    fd = find(list,sch) 
    for t in list : 
     if not fd[0][1]==t[1]: 
      ret.append(t) 
    return ret 

nested = [] 
number = int(raw_input()) 

for i in range(number+1) : 
    try: 
     nom = raw_input() 
    except (EOFError): 
     break 
    note = float(raw_input()) 
    nested.append([nom,note]) 

mini = find(nested,minimum(nested)) 
for i in mini: 
    nested = rmv(nested,i[1]) 


final = find(nested,find(nested,minimum(nested))[0][1]) 
final.sort(key=str) 

for e in final : 
    print e[0] 

Dank für Ihre Hilfe danken!

+1

Sie könnten diese Aussage in mehrere kleinere brechen und das Problem eingrenzen. – tdelaney

+0

Ich habe 'Druck find (verschachtelt, Minimum (verschachtelte))', um Ihren Code und es gedruckt '[]'. Wahrscheinlich ist Ihr Problem in 'find' und ich konnte nicht umhin zu bemerken, dass Ihre Rückkehr seltsam platziert wird. – tdelaney

+0

Wenn Sie nur die Return-Anweisung in 'find' Dedent (jetzt gibt es in der Schleife, so dass Sie nur einen Eintrag bearbeiten) es funktioniert. – tdelaney

Antwort

2

Es lohnt sich Einheit Ihre Funktionen testen oder zumindest ein paar print-Anweisungen hinzufügen, um zu sehen, was sie zurückkehren. Ich

hinzugefügt
print find(nested,minimum(nested)) 

die

[] 

find gedruckt ist nicht die Art und Weise arbeiten Sie es und nach der Inspektion wollen, erscheint es in einer for Schleife ein Problem mit der return Aussage zu sein. Dies macht es

def find (list,sch): 
    ret=[] 
    for t in list: 
     if t[1] == sch: 
      ret.append(t) 
    return ret