def solution(progresses, speeds):
answer = []
while len(progresses) != 0:
count = 0
for i in range(len(progresses)):
if progresses[i] < 100:
progresses[i] += speeds[i]
while (progresses[0] >= 100) and (len(progresses) != 0):
print("pop: ", progresses.pop(0))
speeds.pop(0)
count += 1
if count != 0:
answer.append(count)
return answer
solution([93, 30, 55], [1, 30, 5])
我的python终端显示了这样一个错误。
while (progresses[0] >= 100) and (len(progresses) != 0):
IndexError: list index out of range
我不知道为什么会出现这个错误。。。。。帮我
如其他注释中所述,应避免修改while
或for
循环检查中使用的列表。
如果您想了解代码失败的原因。问题是这条线:
while (progresses[0] >= 100) and (len(progresses) != 0):
您正在访问元素零(progresses[0]
(,但列表为空。如果交换这两个检查,则工作正常(因为如果第一个检查已经返回false
,则根本不执行第二个检查(。
while (len(progresses) != 0 and progresses[0] >= 100):
同意该评论。如果您愿意,您可以执行import copy
和copy_of_speeds = copy.deepcopy(speeds)
,这将生成一个不与之绑定的列表副本,您可以循环使用。
您的代码中也有错误,其中
while progresses[0] >= 100:
progresses.pop(0)
可能会让progresses
一直弹出到一个空列表,然后progresses[0]
碰到索引错误!。所以如果你做
while len(progresses) > 0 && progresses[0] >= 100
,它不会解决这个问题。