在 Python 中,while 循环是条件驱动的迭代工具,只要指定的条件为 True,就会重复执行循环体代码。与 for 循环(遍历可迭代对象)不同,while 更适合循环次数不确定的场景(如用户输入验证、动态条件判断)。
一、基本语法
python
运行
while 条件表达式:
循环体代码(缩进)
# 循环结束后执行的代码(无缩进)
-
条件表达式:返回True/False的表达式(如x < 10、flag == True)。 -
每次循环开始前会先判断条件:
- 条件为
True→ 执行循环体; - 条件为
False→ 退出循环,执行后续代码。
- 条件为
-
缩进规则与
for循环一致(4 个空格 / 1 个 Tab)。
二、核心使用场景
1. 基础示例:固定次数循环
(替代 for 循环,适合理解逻辑)
python
运行
count = 0 # 初始化计数器
while count < 5: # 条件:count小于5
print(f"当前计数:{count}")
count += 1 # 计数器自增(关键!避免死循环)
# 输出:0 1 2 3 4
⚠️ 必看:计数器必须更新!如果漏掉 count += 1,条件永远为 True,会陷入「死循环」(程序卡死)。
2. 不确定次数循环(核心场景)
比如:等待用户输入正确的内容,直到输入符合要求为止。
python
运行
# 要求用户输入数字,直到输入合法
while True: # 无限循环(条件永远为True)
user_input = input("请输入一个数字:")
if user_input.isdigit(): # 判断是否为数字
print(f"你输入的数字是:{user_input}")
break # 输入合法,终止循环
else:
print("输入错误!请重新输入数字。")
3. 结合逻辑运算符的条件
用 and/or/not 组合条件,实现更灵活的判断:
python
运行
# 循环条件:x在0~10之间,且是偶数
x = 0
while x <= 10 and x % 2 == 0:
print(x)
x += 1
# 输出:0 2 4 6 8 10
三、循环控制语句(与 for 循环一致)
while 循环同样支持 break、continue、else,用法完全相同:
1. break:终止整个循环
立即退出循环,无论条件是否为 True:
python
运行
x = 0
while x < 10:
if x == 5:
break # 遇到5终止循环
print(x)
x += 1
# 输出:0 1 2 3 4
2. continue:跳过当前迭代
跳过本次循环剩余代码,直接回到条件判断:
python
运行
x = 0
while x < 5:
x += 1 # 先自增,再判断
if x == 3:
continue # 跳过3,直接下一次循环
print(x)
# 输出:1 2 4 5
3. else:循环正常结束后执行
仅当循环没有被 break 终止时,才执行 else 块:
python
运行
x = 0
while x < 3:
print(x)
x += 1
else:
print("循环正常结束!") # 会执行
# 被break终止时,else不执行
x = 0
while x < 3:
if x == 2:
break
print(x)
x += 1
else:
print("循环正常结束!") # 不执行
四、死循环与终止方式
while True 会创建无限循环(死循环),必须通过 break/ 用户输入 / 异常处理终止,常见用法:
1. 用 break 终止死循环(推荐)
python
运行
# 简易计算器:输入q退出
while True:
op = input("请输入操作(+/-/*//),输入q退出:")
if op == "q":
print("退出计算器!")
break # 终止死循环
a = int(input("数字1:"))
b = int(input("数字2:"))
if op == "+":
print(f"结果:{a + b}")
elif op == "-":
print(f"结果:{a - b}")
# 可补充*//的逻辑
2. 用条件变量终止循环
通过修改条件变量让 while 条件变为 False:
python
运行
running = True # 条件变量
count = 0
while running:
print(count)
count += 1
if count >= 3:
running = False # 修改条件变量,终止循环
# 输出:0 1 2
3. 强制终止死循环(应急)
如果程序陷入死循环无法退出:
- 终端运行:按
Ctrl + C; - IDE(如 PyCharm):点击「停止按钮」(红色方块)。
五、嵌套 while 循环
循环内部嵌套另一个 while 循环,常用于多层条件判断:
python
运行
# 打印3行,每行4个*
row = 1
while row <= 3:
col = 1
while col <= 4:
print("*", end=" ") # 不换行
col += 1
print() # 换行
row += 1
# 输出:
# * * * *
# * * * *
# * * * *
六、while vs for:如何选择?
| 特性 | while 循环 | for 循环 |
|---|---|---|
| 适用场景 | 循环次数不确定、条件驱动 | 遍历可迭代对象(列表 / 字符串等)、次数确定 |
| 语法核心 | 条件表达式 | 迭代变量 + 可迭代对象 |
| 死循环风险 | 高(忘记更新条件变量) | 低(遍历完可迭代对象自动结束) |
| 代码简洁性 | 条件复杂时更清晰 | 遍历场景更简洁 |
选择原则:
- 能明确遍历对象(如列表、range)→ 用
for; - 循环次数不确定(如用户输入、动态条件)→ 用
while。
七、常见坑与注意事项
-
忘记更新条件变量:
python
运行
# 错误:x永远等于0,死循环 x = 0 while x < 5: print(x) # 正确:添加x += 1 -
条件表达式永远为 True:
python
运行
# 错误:10 < 20永远成立,死循环 while 10 < 20: print("死循环") -
浮点数精度问题:避免用浮点数作为
while条件(如while x < 0.1),因浮点数精度误差可能导致循环提前 / 延后结束:python
运行
# 不推荐 x = 0.0 while x < 0.1: print(x) x += 0.01 # 0.01是近似值,可能累计误差 # 推荐:用整数计数替代 count = 0 while count < 10: x = count * 0.01 print(x) count += 1
总结
while 循环的核心是「条件判断驱动迭代」,适合次数不确定的场景(如用户交互、动态条件)。使用时需注意:
- 必须确保条件最终会变为
False(或用break终止),避免死循环; - 合理使用
break/continue/else控制循环流程; - 嵌套循环时注意层级缩进,避免逻辑混乱;
- 优先用
for处理遍历场景,while处理条件驱动场景。