0

我不断收到此错误:

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

我不确定如何解决该错误。有任何想法吗?

4

1 回答 1

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
于 2012-10-05T23:54:16.130 回答