You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现上限为30的斐波那契数列时输出多一个数的问题求助

问题排查与修正方案

嘿,咱们来拆解下你的代码为啥会多输出一个34:你的循环条件是while l[i+1]<30,这个条件判断的是当前列表最后一个元素是否小于30。当列表最后一个元素是21时,它满足21<30,于是程序会计算13+21=34并把它加到列表里——这就导致超出上限的数被意外加入了。

核心问题在于:你判断的是“已存在的最后一个数”,而不是“即将要生成的下一个数”是否符合上限要求。

修正后的代码方案

我们调整逻辑,先算出下一个斐波那契数,判断它是否≤30,再决定是否添加到列表里。这里有两种好用的修正方式:

方式一:基于原代码调整判断逻辑

l = [1, 1]
i = 0
while True:
    next_num = l[i] + l[i+1]
    # 先判断下一个数是否超过上限,超过就停止循环
    if next_num > 30:
        break
    l.append(next_num)
    i += 1
print(l)  # Python3需要加括号,Python2可以用print l

方式二:更简洁的Pythonic写法

不用索引,直接跟踪列表最后两个元素,代码更易读:

fib_list = [1, 1]
while True:
    next_val = fib_list[-1] + fib_list[-2]
    if next_val > 30:
        break
    fib_list.append(next_val)
print(fib_list)

运行任意一段代码,输出都会是[1, 1, 2, 3, 5, 8, 13, 21],完全符合你“上限为30”的需求。

内容的提问来源于stack exchange,提问作者user134456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:39:39