2017-08-01 10 views
0
a = [] 
a.append(0.99) 
for i in range(5): 
    a[i+1] = a[i] * ((1+((d*c)/2))/(1-((d*c)/2))) 
    a.append(a[i+1]) 

IndexError: list index out of range 4行目から来ます。リストに0番目の要素を追加し、残りの要素を追加しながら反復する

私はさまざまな方法の手を試しましたが、それを正しくすることはできません。出力は次のようになります。

[0.99, ####, ####, ####, ####]

私はそれが本当のシンプルなものだと確信している、と私はエラーがリストの0番目の要素、ヘルプの任意のチャンスを必要とすると考えていますか?あなたはPythonでリストを作成するときに、あなたがそれらを割り当てたい場合にも(まだ値を持っていないインデックスにアクセスすることはできません

a0 = 0.99 
a1 = a0 * ((1+((d*c)/2))/(1-((d*c)/2))) 
a2 = a1 * ((1+((d*c)/2))/(1-((d*c)/2))) 
a3 = a2 * ((1+((d*c)/2))/(1-((d*c)/2))) 
a4 = a3 * ((1+((d*c)/2))/(1-((d*c)/2))) 

答えて

-1
a.append(a[-1] ** ((1+((d*c)/2))/(1-((d*c)/2)))) 
+0

あなたのコメントの後にさらにコメントを追加しました。あなたの答えをテストするとき、値は同じではなかった。 – dlsj

+0

私はそれを取り返します、私は間違って私のコードを入力し、乗算の代わりに二乗しました。これはうまくいって、ありがとう! – dlsj

0

は同じ答えを吐き出すべき).append()を使用しないと、インデックスエラーが発生します。そのための回避策としては、例えば、サイズのNone値欲しいか0値を持つことです。今

a = [0] * 5 
a.append(0.99) 
for i in range(4): 
    a[i+1] = a[i] ** ((1+((d*c)/2))/(1-((d*c)/2))) 
    # no need to append now 

a[0, 0, 0, 0, 0]になり、あなたは通常、インデックスでアクセスすることができます。

EDIT:

私はあなたが((1+((d*c)/2))/(1-((d*c)/2)))aを掛けたい、あなたの最近の編集に気づいていますがのパワーにを意味するコード例で**を使用しています。代わりに*を使用してください。

+0

さて、私は、リストの長さを設定するだけでインデックスにアクセスできると思っていました。それをアップアップし、私のエラーをキャッチ、大いに感謝します。 – dlsj

+0

うれしかった! –

関連する問題