2012-10-05 138 views
0

我不斷收到此錯誤:的Python:IndexError:列表索引超出範圍

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 

我不完全知道如何修正這個錯誤。有任何想法嗎?

回答

2

您正在設置while循環的上限爲myList的長度,這意味着計數器的最終值將是長度。由於列表索引從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 
+0

完美。謝謝我的男人 – user1707398

+0

@ user1707398沒有概率,開心有幫助。 – RocketDonkey