python的while循环

321 阅读5分钟

在 Python 中,while 循环是条件驱动的迭代工具,只要指定的条件为 True,就会重复执行循环体代码。与 for 循环(遍历可迭代对象)不同,while 更适合循环次数不确定的场景(如用户输入验证、动态条件判断)。

一、基本语法

python

运行

while 条件表达式:
    循环体代码(缩进)
# 循环结束后执行的代码(无缩进)
  • 条件表达式:返回 True/False 的表达式(如 x < 10flag == 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 循环同样支持 breakcontinueelse,用法完全相同:

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

七、常见坑与注意事项

  1. 忘记更新条件变量

    python

    运行

    # 错误:x永远等于0,死循环
    x = 0
    while x < 5:
        print(x)
    # 正确:添加x += 1
    
  2. 条件表达式永远为 True

    python

    运行

    # 错误:10 < 20永远成立,死循环
    while 10 < 20:
        print("死循环")
    
  3. 浮点数精度问题:避免用浮点数作为 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 循环的核心是「条件判断驱动迭代」,适合次数不确定的场景(如用户交互、动态条件)。使用时需注意:

  1. 必须确保条件最终会变为 False(或用 break 终止),避免死循环;
  2. 合理使用 break/continue/else 控制循环流程;
  3. 嵌套循环时注意层级缩进,避免逻辑混乱;
  4. 优先用 for 处理遍历场景,while 处理条件驱动场景。