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

Python斐波那契代码两种变量赋值方式结果差异原因咨询

两种赋值方式结果差异的核心原因

这两种写法的差异本质是Python赋值语句的执行规则不同:

  • 第一种是逐行顺序赋值,会提前覆盖prev的原始值,导致计算逻辑出错
  • 第二种是单行多变量同时赋值,会先计算所有右侧表达式的结果再统一赋值,符合斐波那契的计算逻辑

逐行赋值的错误逻辑分析

你写的两行分开赋值代码:

prev = curr # 先执行
curr = curr + prev # 后执行

是按从上到下的顺序逐行执行:

  1. 第一步先把prev的值修改为当前的curr值,这时候上一轮的prev原始值已经被完全覆盖丢失
  2. 第二步计算curr + prev的时候,prev已经是第一步修改后的新值,相当于每次curr都等于自身原值的2倍,所以最终输出是1 1 2 4 8的等比序列。

举个实际运行的步骤示例(初始prev=1、curr=1):

  • 第一轮:prev被赋值为1 → curr = 1 + 1 = 2
  • 第二轮:prev被赋值为2 → curr = 2 + 2 =4
  • 第三轮:prev被赋值为4 → curr =4 +4=8
    和你得到的错误输出完全一致。

单行多变量赋值的正确逻辑分析

Python的单行多变量赋值遵循以下规则:

先计算等号右侧所有表达式的值,全部存入临时缓存后,再按从左到右的顺序赋值给左侧的变量。

你写的正确代码:

prev ,curr = curr, curr + prev

执行过程如下(同样初始prev=1、curr=1):

  1. 先计算右侧所有表达式的值:第一个值为当前curr的值1,第二个值为当前curr + prev的结果1+1=2,两个值都存在临时缓存里,不会修改现有变量
  2. 再把缓存里的两个值依次赋值给左侧的prev和curr:prev=1,curr=2
  3. 下一轮计算时,prev=1、curr=2,右侧计算得到2、1+2=3,赋值后prev=2、curr=3,完全符合斐波那契序列「后项=前两项之和」的规则,所以输出正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:15:03