while循环易陷入死循环,因初学者常忽略更新循环变量:漏写自增/自减、多变量条件只改其一、浮点数精度误差、分支中跳过更新;且语法不报错、现象滞后、调试时易忽视变量变化。

因为初学者往往把注意力集中在“要做什么”,而忽略了“什么时候停”。while循环的执行逻辑是:先判断条件,为真就执行循环体,再回到条件判断——这个过程本身不自动推进任何变量。如果循环体内没写更新语句(比如 i += 1 或 num = num - 1),条件值就永远不变,结果就是一遍又一遍重复执行同一段代码。
常见疏忽点
• 变量在循环外初始化了,但循环内漏写自增/自减操作
• 条件依赖多个变量,只改了一个,另一个卡住导致整体条件始终成立
• 使用浮点数做循环控制(如 while x != 0.5),因精度问题实际永远达不到目标值
• 在 if 分支或 continue 后面跳过了更新语句,造成某些路径下变量没变
为什么容易被忽略
• 语法上不报错:Python 或 C 不会提示“你忘了更新变量”,程序照常运行,只是行为异常
• 现象滞后:第一次运行可能看不出问题,等数据量变大或输入变化时才暴露
• 调试盲区:初学者常盯着输出看,却没养成在循环开头/结尾加 print(变量名) 的习惯
一个典型对比
错误写法:
i = 0
while i
print(i)
# 忘记写 i += 1 → 永远输出 0
正确写法:
i = 0
while i
print(i)
i += 1 # 关键更新,让 i 逐步接近 5











