循环代码继续运行

时间:2012-04-13 22:43:44

标签: python list while-loop

出于某种原因,这段代码没有打印任何内容并且没有停止运行,有人可以告诉我这里出了什么问题吗?

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

print l

5 个答案:

答案 0 :(得分:3)

使用当前值k(0)在循环之前设置i的值(因此循环条件),并且在循环执行期间永远不会改变。您必须根据循环内k的新值重新分配i才能更改。

答案 1 :(得分: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 Fibonacci序列生成器(字面意思):

def Fibonacci():
  a, b = 0, 1

  while True:
    yield a

    a += b
    a, b = b, a

for n in Fibonacci():
  raw_input(n)

答案 2 :(得分: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

答案 3 :(得分:0)

您没有对k变量进行任何更改。一旦你计算了K的值,代码就会在while循环中得到股票,因为k的值永远不会改变,你只需要将k的值附加到列表中。

答案 4 :(得分:-1)

不确定python, 但看起来你也更新了K的值,不确定python语法中while循环的范围是什么。