Python编写斐波那契序列自动化程序运行出错,求错误排查
代码问题梳理
list.append()方法是原地修改列表,本身没有返回值,你直接返回lst.append(...)的执行结果,打印输出只会得到None,无法拿到修改后的斐波那契列表。- 循环内第一行就写了
return语句,循环只会执行1次就直接退出函数,完全无法重复生成后续的斐波那契数。 - 你没有在循环内修改全局变量
length的值,length初始值为6永远小于等于stop的10,就算删掉return语句也会陷入死循环。另外如果是要按列表长度控制生成次数,应该直接判断传入列表的len(lst),全局length变量不会跟着列表长度动态变化。 - 逻辑流程错误:应该先循环完成所有斐波那契数的追加操作,再返回最终列表,不能在循环内提前返回。
修正后可运行代码
stop = 10 def append_sum(lst): # 直接用列表当前长度作为判断阈值,不需要额外全局变量控制 while len(lst) <= stop: lst.append(lst[-1] + lst[-2]) # 所有元素追加完成后再返回列表 return lst print(append_sum([1, 1, 2]))
运行后输出结果为:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
如果你的需求是生成数值不超过stop的斐波那契序列,把循环条件改为while lst[-1] <= stop即可。
内容的提问来源于stack exchange,提问作者slightlyconfused
相关产品推荐
相关产品推荐

