Python while循环执行逻辑与i+=增量赋值差异咨询
while循环执行逻辑与不同增量写法的核心差异
首先明确while循环的固定执行顺序,没有任何特殊逻辑:
- 第一步:先执行循环前的初始化代码
- 第二步:判断while后紧跟的条件,条件为假直接跳过整个循环块,一步都不执行
- 第三步:条件为真的话,从上到下逐行执行完循环体内的所有代码
- 第四步:回到第二步重新判断条件,重复上述流程
你贴的示例代码里有个笔误:i=+1不是增量写法,等价于i = 1,每次循环都会把i强制重置为1,运行后会无限打印1,你实际测试的应该是i += 1的正确写法。
不同增量写法的实际执行流程
1. 循环内写i += 2时仅输出1、3的原因
逐行跑逻辑就能看得很清楚:
- 初始化阶段执行
i = 1 - 第一次判断
i < 5:1 < 5 结果为真,进入循环- 执行
print(i),输出1 - 执行
i += 2,i的值更新为1+2=3
- 执行
- 第二次判断
i <5:3 <5 结果为真,进入循环- 执行
print(i),输出3 - 执行
i +=2,i的值更新为3+2=5
- 执行
- 第三次判断
i <5:5 <5 结果为假,直接退出循环,不会再执行循环内的打印逻辑
核心注意点:条件判断永远发生在进入循环体之前,变量修改后不会立刻触发打印,必须等下一轮判断通过才会执行打印逻辑。
2. 其他增量写法的效果差异
- 写
i += 0时:每次循环i的值都不会发生变化,永远是初始值1,1<5的条件永远为真,程序会无限循环打印1,无法自行退出。 - 写
i +=1(即你示例笔误对应的正确写法)时:- 初始i=1,判断通过后打印1,i更新为2
- 判断2<5通过,打印2,i更新为3
- 判断3<5通过,打印3,i更新为4
- 判断4<5通过,打印4,i更新为5
- 判断5<5不通过,退出循环,最终依次输出1、2、3、4
常见踩坑提醒
不要把复合赋值运算符+=写反成=+,后者不是“加1赋值”,是直接把变量赋值为正1,和i = 1效果完全一致,很容易写出无意义的死循环。
内容的提问来源于stack exchange,提问作者realmilanez
相关产品推荐
相关产品推荐

