奇怪的python索引超出范围

时间:2016-07-20 22:48:40

标签: python indexing range

我的python代码出现了一个奇怪的问题

当我用它测试时:

4
Prashant
32
Pallavi
36
Dheeraj
39
Shivam
40

它运作良好,但当我尝试用它测试它时:

5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39

它因此错误而失败:

运行时错误 Traceback(最近一次调用最后一次):   文件“solution.py”,第48行,in     final = find(嵌套,查找(嵌套,最小(嵌套))[0] [1]) IndexError:列表索引超出范围

这是代码,我不明白为什么它崩溃了,我尝试了很多différents解决方案而没有任何结果..

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]

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

对单元测试功能或者至少添加一些打印语句以查看它们返回的内容是值得的。我添加了

print find(nested,minimum(nested))

打印

[]

find无法按照您希望的方式运行,并且在检查之后,return循环内的for语句似乎存在问题。这使它工作

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