我一直收到这个错误:
line 4, in timesTwo
IndexError: list index out of range
此计划:
def timesTwo(myList):
counter = 0
while (counter <= len(myList)):
if myList[counter] > 0:
myList[counter] = myList[counter]*2
counter = counter + 1
elif (myList[counter] < 0):
myList[counter] = myList[counter]*2
counter = counter + 1
else:
myList[counter] = "zero"
return myList
我不确定如何修复错误。有什么想法吗?
答案 0 :(得分:3)
您正在将while
循环的上限设置为myList
的长度,这意味着counter的最终值将是长度。由于列表从0开始编制索引,因此会导致错误。您可以通过删除=
符号来解决此问题:
while (counter < len(myList)):
或者,您可以在for
循环中执行此操作,这可能更容易处理(不确定这是否适合您的用例,因此如果没有,上述情况应该有效):
def timesTwo(myList):
for index, value in enumerate(myList):
if value is not 0:
myList[index] *= 2
else:
myList[index] = 'zero'
return myList