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 的 Fibonacci 序列生成器(字面意思):

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 的值,代码就会在 while 循环中获取库存,因为 k 的值永远不会改变,你只需将 k 的值附加到列表中。

于 2012-04-13T22:45:58.717 回答
-1

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

于 2012-04-13T22:46:27.547 回答