1

次のプログラムでは、インデックスが範囲外のエラーが発生しました。

def evaluate(x, y):
    result = 0
    for i in x:
        result += (x[i])*(y**i)
    return result
4

1 に答える 1

2

のすべての値を既にループしているxため、再度インデックスを付ける必要はありません。

def evaluate(x, y):
    result = 0
    for i in x:
        result += i * (y**i)
    return result

次の 2 つを比較します。

>>> x = [3, 2]
>>> for i in x:
...     print i
...
3
2
>>> for i in x:
...     print x[i]
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
IndexError: list index out of range

iへのインデックスになると予想される場合はx、 を使用enumerate()してそのインデックスを取得します。

def evaluate(x, y):
    result = 0
    for i, value in enumerate(x):
        result += value * (y**i)
    return result
于 2012-10-20T16:31:51.777 に答える