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

Python中循环开头与结尾执行i+=1的差异是什么?

两段while循环代码的核心差异分析

先直接说结果:第一段代码能正常结束,输出2、4、6、8、10后打印End of loop;第二段代码会陷入死循环,永远无法执行到最后的End of loop。

拆解第一段代码的执行逻辑

i = 0
while i < 10:
    i += 1  # 先自增,再判断奇偶
    if (i % 2) != 0: continue
    print(i)
print("End of loop")
  • 初始i=0,进入循环后先把i自增为1
  • 1是奇数,触发continue跳过后续代码,回到循环条件判断
  • 后续每次循环都先完成自增:2(偶数,打印)、3(奇数,跳过)、4(打印)……直到i变成10时,i<10不成立,循环结束,执行最后的打印语句。

拆解第二段代码的执行逻辑

i = 0
while i < 10:
    if (i % 2) != 0: continue  # 先判断奇偶,自增在后面
    print(i)
    i += 1
print("End of loop")
  • 初始i=0,是偶数,不触发continue,打印0后i自增为1
  • 下一次循环,i=1是奇数,触发continue,直接跳过了print(i)和i += 1
  • 此时i的值还是1,循环条件i<10永远成立,循环会无限重复,永远到不了最后的End of loop。

关于你提到的PHP/JS习惯的说明

这不是Python特有的逻辑问题,换成PHP或JS写同样逻辑的代码(把自增放在continue后面的位置),一样会触发死循环。比如写压’外 访问(社交ups“End[仔写的这段JS代码:

let i = 0;
while (i < 10) {
    if (i % 2 !== 0) continue;
    console.log(i);
    i++;
}

运行后同样会在i=1时卡住——因为continue跳过了i++,变量永远不会递增,循环条件一直满足。

本质问题是:continue会跳过当前循环剩余的所有代码,如果自增操作被continue跳过,变量值不会变化,就会导致循环条件永远成立,陷入死循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:45:11