2012-10-05 6 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

Смежные вопросы