很多初学者学完if判断,以为"条件"这件事就搞定了。结果一碰到"重复执行"就懵——for循环会用了,但碰到"不确定要循环多少次"的场景,还是抓瞎。比如:让用户输入密码,输对为止;监听传感器数据,超标就报警;猜数字游戏,猜对才停……
这些场景的共同特点是:不知道要循环几次,但知道什么时候该停。这就是while循环的主场。

一、while循环的核心逻辑:一句话讲透
while = "只要……就继续"

执行逻辑极其直白:
和for循环的关键区别:
| 高 |
一句话记忆: for是"数着次数干活",while是"盯着条件干活"。
二、最基础写法:计数器控制循环
最经典的场景——打印1到5:

输出:

三步缺一不可:
| 死循环! |
⚠️ 第③步是新手翻车第一大户。 忘了写
count += 1,count永远是1,条件永远为True,程序就卡死在那里了。
三、while循环的执行流程(拆解每一步)
拿上面的代码,逐轮拆解:

关键认知: 条件判断发生在每一轮循环的最开头,不是最末尾。也就是说,while是"先判断后执行",不是"先执行再判断"。
Python没有do-while语法。如果想"先执行一次再判断",用
while True+break模拟(后面会讲)。
四、break:紧急刹车
break的作用:不管条件还是不是True,直接终止整个循环。

break的类比: 在排队等窗口办事(while循环),突然接到电话说事情取消了——直接走人(break),不管前面还有多少人。

注意事项:break只跳出最内层循环,嵌套循环里外层不受影响break后面的代码不会执行(同一次迭代内)
五、continue:跳过这次,下次继续
continue的作用:跳过本次循环剩余的代码,直接进入下一轮判断。

continue的类比: 流水线上检查产品,遇到不合格的直接扔掉跳过(continue),但流水线不停,继续处理下一个。
break vs continue 对比:
| else不执行 | else照常执行 |
⚠️ 最后一行很重要——continue不影响else块,break会阻止else块执行。
六、while...else:Python独有的"彩蛋"
这是Python的特色语法,其他语言(C/Java/JS)都没有。

else的执行条件只有一个:循环是因为条件变False而自然结束的。 如果被break打断,else不执行。

场景对比:
一句话理解: else = "循环善后处理",正常走完才触发,中途跑了就不管了。

💡 不用while...else的话,你得额外写一个found标志变量,代码又丑又长。这就是Pythonic的写法。
七、实战案例:猜数字游戏
把while、break、continue、计数器全串起来:



这段代码覆盖了while的核心考点:
八、死循环:新手第一大坑
8.1 怎么产生的?

8.2 怎么避免?三板斧
| 计数器必更新 | count += 1 | |
| while True必配break | if 条件: break | |
| 调试时加计数器上限 | if count > 1000: break |
8.3 死循环了怎么办?
Ctrl + C 强制中断kill -9 PID九、while vs for:到底用哪个?
range(n) | ||
line = f.readline() | ||
选型口诀: 遍历已知用for,条件未知用while,不确定次数等信号,while True加break。
十、进阶技巧
10.1 活动标志(Flag)控制多条件退出

适合多个退出条件共用一个标志变量的场景。
10.2 while处理列表:逐项移动

10.3 while删除列表中的特定元素

⚠️ 注意:不要在for循环里删除列表元素(会导致跳过),用while更安全。
十一、避坑清单(10条)
while True没配breakcount < len(list)但list在变while list:更稳math.isclose()while line:自动处理十二、速查表
while 条件: | |
break | |
continue | |
else | |
while True:if 条件: break | |
flag = True,条件满足时flag = False | |
while list:list.pop() | |
Ctrl + C | |
总结: while循环就是"盯着条件干活"——条件True就继续,False就停。记住三件事:计数器必须更新、break是急刹车、else是正常结束的善后。搞定这三点,while就不会翻车。
往期推荐
三菱FX5U温控实战:从零搭建一套工业加热系统
S7-1500自动分拣加工系统:从架构到程序
从传感器到气缸,手把手教写出能跑的程序
点胶轨迹实操:多轴插补从入门到良品率99.9%
S7-1200运动控制轴,从0到1玩转工艺对象,别再对着脉冲发呆了
三菱FR-D700变频器参数设置与实操指南——从面板操作到现场调试
用SCL写S7-1200 Modbus通讯,少走半年弯路
升降控制系统程序架构设计及组态——从硬件选型到安全联锁
S7-1200定时器四种工作类型+时间数据类型转换
西门子触摸屏弹窗公共调用,一个弹窗控制所有设备,有会的吗?
S7-1200 FB功能块封装调用 & UDT用户数据类型创建
PLC常见故障原因及处理:老电工30年经验的排查铁律
从HMI到MES,把数据链路打通
PLC调试顺序:离线检查→手动调试→自动调试→故障模拟,一步都不能少
S7-1200 Modbus通讯功能块优化封装:从"能用"到"好用"的进阶之路
西门子单站控制:从I/O分配到手动自动切换