python在while循环IndexError:列表索引超出范围


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

我不知道为什么会出现这个错误。。。。。帮我

如其他注释中所述,应避免修改whilefor循环检查中使用的列表。


如果您想了解代码失败的原因。问题是这条线:

while (progresses[0] >= 100) and (len(progresses) != 0):

您正在访问元素零(progresses[0](,但列表为空。如果交换这两个检查,则工作正常(因为如果第一个检查已经返回false,则根本不执行第二个检查(。

while (len(progresses) != 0 and progresses[0] >= 100):

同意该评论。如果您愿意,您可以执行import copycopy_of_speeds = copy.deepcopy(speeds),这将生成一个不与之绑定的列表副本,您可以循环使用。

您的代码中也有错误,其中

while progresses[0] >= 100:
progresses.pop(0)

可能会让progresses一直弹出到一个空列表,然后progresses[0]碰到索引错误!。所以如果你做

while len(progresses) > 0 && progresses[0] >= 100,它不会解决这个问题。

相关内容

  • 没有找到相关文章

最新更新