python at while loop IndexError: list index out of range
python at while loop IndexError: list index out of range
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
我不知道为什么会出现这个错误.....帮帮我
同意评论。如果需要,您可以执行 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
而不是,这不会解决该问题。
正如其他评论中提到的,您应该避免修改在 while
或 for
循环检查中使用的列表。
如果您想了解代码失败的原因。问题是这一行:
while (progresses[0] >= 100) and (len(progresses) != 0):
您正在访问元素零 (progresses[0]
),但列表为空。如果你交换这两个检查,它工作正常(因为如果第一个检查已经 returns false
第二个检查根本不执行)。
while (len(progresses) != 0 and progresses[0] >= 100):
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
我不知道为什么会出现这个错误.....帮帮我
同意评论。如果需要,您可以执行 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
而不是,这不会解决该问题。
正如其他评论中提到的,您应该避免修改在 while
或 for
循环检查中使用的列表。
如果您想了解代码失败的原因。问题是这一行:
while (progresses[0] >= 100) and (len(progresses) != 0):
您正在访问元素零 (progresses[0]
),但列表为空。如果你交换这两个检查,它工作正常(因为如果第一个检查已经 returns false
第二个检查根本不执行)。
while (len(progresses) != 0 and progresses[0] >= 100):