0

何らかの理由で、このコードは何も出力せず、実行も停止しません。ここで何が問題なのか誰か教えてもらえますか?

l = [1,2]
i = 0
k = l[i]+l[i+1]
while k <= 10:
    l.append(k)
    i += 1

print l
4

5 に答える 5

3

の値k(したがってループ条件) は、i(0) の現在の値を使用してループの前に設定され、ループの実行中に変更されることはありません。変更するには、ループ内kの新しい値に基づいて再割り当てする必要があります。i

于 2012-04-13T22:45:35.333 に答える
3

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)
于 2012-04-13T22:49:17.440 に答える
2

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
于 2012-04-13T22:48:17.000 に答える
0

k 変数に変更を加えていません。K の値を計算すると、k の値は決して変わらないため、コードは while ループでストックされます。単に k の値をリストに追加し続けるだけです。

于 2012-04-13T22:45:58.717 に答える
-1

Pythonについてはわかりませんが、Kの値も更新しているように見えますが、Python構文のwhileループの範囲がわかりません。

于 2012-04-13T22:46:27.547 に答える