我的 while 循环有缺陷还是需要很长时间才能完成?

Is my while loop flawed or is it just going to take a long time to finish?

在 python3 中编写代码时,我开发了一个 while 循环,似乎要花很长时间才能完成加载。我不明白为什么它不起作用以及它是否会无限地 运行 所以如果有人看到我的错误请指出。

list = [1,2]
Conditional = list[-1] < 4,000,000
while Conditional:
    def fibonacci(first,second):
        first = first + second
        list.insert(-1,first)
        second = first + second
        list.insert(-1,second)
fibonacci(1,2)

这个循环永远不会结束:

Conditional = list[-1] < 4,000,000 始终为真,因此,while Conditional: 等同于 while True

如果你想要所有 fib 数字都在 4,000,000 以下,你可以这样做:

fibs = [1,2]
while fibs[-1] < 4000000:
    fibs.append(fibs[-2] + fibs[-1])

@Reblochon Masque 的回答实际上 return 最后一个数字高于 4,000,000。您需要在追加之前检查最后一个元素。

如果我要编写函数,我会这样做:

def fibonacci(data, n):
   fb = data[-1]+data[-2] #
   while fb < n:
       data.append(fb)
       fb = data[-1]+data[-2]
   return data

mylist = [1,2]
limit = 4000000
output = fibonacci(mylist,limit)

原始代码注释:

  • 您在循环内定义函数(我不确定它是否可以访问)。
  • 我不会使用 'list' 作为名称,因为列表是内置函数
  • 我会使用追加作为最后一个元素插入。