2017-01-01 18 views
2

Precursor:私はPythonを初めて使っていますが、周りを見回して問題を把握できませんでした。実際には、フィボナッチシーケンスが欲しかったので、出力は良いですが、なぜそれが機能するのか分かりません。私は他の何かを期待していた。ここでPythonスクリプトのコード出力が期待通りではありません

sequence=[1,2] 
t=0 
for i in range(9): 
    term=sequence[t-1]+sequence[t-2] 
    sequence.append(term) 
print(sequence) 

出力です:ここで

は、私が書いたものである

[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144] 

は、出力が「範囲外のリストインデックス」のようなエラーのいくつかの並べ替えではないでしょうか?

または

他にはありませんか?出力

sequence=[1,2] 
t=0 
for i in range(9): 
    term=sequence[t-1]+sequence[t-2] 
    sequence.append(term) 
    t+=1 
print(sequence) 

しかし、::多分これ、同様:

ここ
[1, 2, null, null, null] 

私はフィボナッチ数列を取得するために記述する必要がありますことを期待していたものである(通知T + = 1)

[1, 2, 3, 4, 3, 5, 7, 7, 8, 12, 14] 

フィボナッチシーケンスではなぜそれが機能しますか? Pythonは、それがわからないものを自動的に認識しますか?

私が言っていることを理解していますか?

答えて

1

Pythonでは、sequence[-1]はリストの最後の項目を指し、sequence[-2]は最後の項目の次の項目を指します。これは多くのリストプログラミングを簡素化します。私はちょうど2日前にこのサイトの回答に否定的なインデックスを使用しました。 Pythonコードは通常、他の言語のコードよりも短いため、負のインデックスは理由の1つにすぎません。このテクニックは、文字列でも機能します。詳細については、文字列をスライスする部分のhereを参照してください。

したがって、コード内でインデックスが決して範囲外です。毎回ループの項目-1-2が追加されます。これはループの最後の2つの数字です。これは、フィボナッチシーケンスにとって欲しいものです。

+0

ありがとうございました!それは多くの意味があります。そして、完璧なフィボナッチシーケンスのためにはい、そうです!私はPythonがネガティブインデックスを取ることができないこと、そしてそれがリストのリアエンドに対応していることを理解していませんでした。これは他の多くのものに役立ちます!どうもありがとうございます! – kitekid99

+0

@ kitekid99あなたはこの答えを受け入れるべきです – Uriel

1

t元のアルゴリズムでは混乱している可能性があります。無意味なIMOです。 2番目のアルゴリズム(t += 1のあるアルゴリズム)では、t=0t=2に変更すると、期待どおりに動作します。

+0

これはちょうどint 1とint 2を追加し続けます – kitekid99

+0

私は 't = 0'を' t = 2'に変更することを意味しました。最後に。 –

+0

私の悪い、あなたの応答を誤解。はい、それはうまくいくはずです。 – kitekid99

0

各繰り返しでアイテムをリストに追加し、シーケンスのサイズが大きくなったり大きくなったりします。各ステップで最後の2つのアイテムを合計してエラーがないようにします。

関連する問題