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

Python 我的while循环是有缺陷的还是需要很长时间才能完成?,python,python-3.x,while-loop,infinite-loop,fibonacci,Python,Python 3.x,While Loop,Infinite Loop,Fibonacci,在用Python3编写代码时,我开发了一个While循环,似乎要花很长时间才能完成加载。我不明白为什么它不工作,它是否会无限运行,所以如果有人能看到我的错误,请指出它 list = [1,2] Conditional = list[-1] < 4,000,000 while Conditional: def fibonacci(first,second): first = first + second list.insert(-1,first)

在用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)
list=[1,2]
条件=列表[-1]<4000000
虽然有条件:
def斐波那契(第一,第二):
第一个=第一个+第二个
列表。插入(-1,第一个)
秒=第一+秒
列表。插入(-1,秒)
斐波那契(1,2)
这个循环永远不会结束:
Conditional=list[-1]<4000000
始终为真,因此,
while Conditional:
等同于
while True

如果您希望所有fib数字低于4000000,可以这样做:

fibs = [1,2]
while fibs[-1] < 4000000:
    fibs.append(fibs[-2] + fibs[-1])
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)
fibs=[1,2]
当fibs[-1]<4000000时:
fibs.append(fibs[-2]+fibs[-1])

@Reblochon Masque answer实际返回的最后一个数字将超过4000000。在追加之前,需要检查最后一个元素

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

fibs = [1,2]
while fibs[-1] < 4000000:
    fibs.append(fibs[-2] + fibs[-1])
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)
def fibonacci(数据,n):
fb=数据[-1]+数据[-2]#
而fb
关于原始代码的注释:

  • 您在循环中定义了函数(我不确定它是否可以访问)
  • 我不会使用“list”作为名称,因为list是一个内置函数
  • 我将使用append-to-insert作为最后一个元素

您的意思是
如果有条件:
?对斐波那契的调用应该缩进吗?(即,在环体内)?若是这样,它的参数是否应该从列表中选取?还有:
第一个
第二个
为什么计算为相同的东西?(看起来好像第二个不应该存在。)如果while循环中的条件没有改变,它将永远持续下去。