【问题标题】:While loop code keeps running虽然循环代码继续运行
【发布时间】:2012-04-26 07:31:16
【问题描述】:

由于某种原因,这段代码没有打印任何内容,也没有停止运行,谁能告诉我这里出了什么问题?

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

print l

【问题讨论】:

  • 你不要在while循环中修改k

标签: python list while-loop


【解决方案1】:

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)

【讨论】:

    【解决方案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】:

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

      【讨论】:

        【解决方案4】:

        您没有对 k 变量进行任何更改。一旦你计算出 K 的值,代码就会在 while 循环中获取库存,因为 k 的值永远不会改变,你只需继续将 k 的值附加到列表中。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2022-09-30
            • 1970-01-01
            • 2021-11-25
            • 1970-01-01
            • 2017-03-16
            • 2015-05-08
            • 2015-07-26
            • 2016-07-19
            • 1970-01-01
            相关资源
            最近更新 更多