何らかの理由で、このコードは何も出力せず、実行も停止しません。ここで何が問題なのか誰か教えてもらえますか?
l = [1,2]
i = 0
k = l[i]+l[i+1]
while k <= 10:
l.append(k)
i += 1
print l
何らかの理由で、このコードは何も出力せず、実行も停止しません。ここで何が問題なのか誰か教えてもらえますか?
l = [1,2]
i = 0
k = l[i]+l[i+1]
while k <= 10:
l.append(k)
i += 1
print l
の値k
(したがってループ条件) は、i
(0) の現在の値を使用してループの前に設定され、ループの実行中に変更されることはありません。変更するには、ループ内k
の新しい値に基づいて再割り当てする必要があります。i
Python は の値を評価するk
ので、それk
は式ではなく、その式の結果です。
k = l[i]+l[i+1] # In your case it's l[0] + l[1] = 3
k
おそらくすべてのループを評価したいでしょう:
l = [1,2]
i = 0
for i in range(0, 10 + 1):
l.append(l[i] + l[i + 1])
print l
楽しみのために、より Pythonic なフィボナッチ シーケンス ジェネレーターを (文字通り):
def Fibonacci():
a, b = 0, 1
while True:
yield a
a += b
a, b = b, a
for n in Fibonacci():
raw_input(n)
k を含む行を移動するだけです。
l = [1,2]
i = 0
k = l[i]+l[i+1]
while k <= 10:
l.append(k)
i += 1
k = l[i]+l[i+1]
print l
k 変数に変更を加えていません。K の値を計算すると、k の値は決して変わらないため、コードは while ループでストックされます。単に k の値をリストに追加し続けるだけです。
Pythonについてはわかりませんが、Kの値も更新しているように見えますが、Python構文のwhileループの範囲がわかりません。