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 に答える