【发布时间】:2016-07-20 22:48:40
【问题描述】:
我的 python 代码有一个奇怪的问题
当我测试它时:
4
Prashant
32
Pallavi
36
Dheeraj
39
Shivam
40
效果很好,但是当我尝试用这个测试它时:
5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39
失败并出现此错误:
运行时错误 回溯(最近一次通话最后): 文件“solution.py”,第 48 行,在 最终 = 查找(嵌套,查找(嵌套,最小(嵌套))[0][1]) IndexError: 列表索引超出范围
这是代码,我不明白它为什么会崩溃,我尝试了很多不同的解决方案但没有任何结果..
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]
感谢您的帮助!
【问题讨论】:
-
您可以将该陈述分成几个较小的陈述并缩小问题范围。
-
我在您的代码中添加了
print find(nested,minimum(nested)),它打印了[]。您的问题可能出在find,我不禁注意到您的退货位置很奇怪。 -
如果你只是在
find中删除return 语句(现在它在循环中返回,所以你只处理一个条目)它可以工作。