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

Python斐波那契数列简单实现异常:重复输出2十次

你的斐波那契代码问题分析与修复

嘿,我来帮你搞定这个问题!你代码里的核心问题是没有在循环中更新n3的值,所以它一直停留在初始的2,自然会重复打印啦。让我一步步拆解问题,再给你修正方案:

问题出在哪?

先看你原来的代码片段:

n1 = 1
n2 = 1
n3 = n1 + n2  # 这里n3被赋值为2,之后就没再变过!
for i in range(10):
    n1 + n2  # 这行只是做了加法,但没把结果存到n3里,等于白算
    print(n3)  # 所以每次打印的都是最初的2
    n1 = n2
    n2 = n3

你虽然在循环最后更新了n1和n2,但n3从来没被重新计算过——它的数值永远停留在第一次赋值的1+1=2,所以循环10次就会打印10个2。

修复后的代码

要正确生成斐波那契数列,每次循环都需要先计算新的项,再更新前两项的值。这里有两种简洁的写法:

写法1:保持你的变量命名逻辑

n1 = 1
n2 = 1
# 如果需要输出前10项,先打印初始的两个1
print(n1)
print(n2)
# 剩下8项用循环生成
for i in range(8):
    n3 = n1 + n2  # 每次循环都重新计算新的项
    print(n3)
    # 更新前两项,为下一次循环做准备
    n1 = n2
    n2 = n3

写法2:用元组赋值简化代码(更Pythonic)

这种写法不用额外的n3变量,直接通过元组解包更新前两项,更简洁不易出错:

a, b = 1, 1
print(a)
print(b)
for _ in range(8):
    a, b = b, a + b  # 一步完成更新:新的a是原来的b,新的b是原来的a+b
    print(b)

额外说明

如果你想从第三项开始输出10项(也就是不打印前两个1),只需要调整循环次数为10,并且去掉开头的两次打印即可:

a, b = 1, 1
for _ in range(10):
    a, b = b, a + b
    print(b)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:26:05