当前位置:首页>python>Python while循环——重复执行的艺术

Python while循环——重复执行的艺术

  • 2026-09-14 14:39:13
Python while循环——重复执行的艺术

一、什么是while循环?

while循环是Python中的一种条件循环,只要条件为真,就会重复执行一段代码块。就像反复检查某个条件,满足就一直做,直到条件不再满足。

count = 1while count <= 5:print(f"第{count}次循环")    count += 1

二、while循环的基本语法

while 条件:    循环体(要重复执行的代码)    [循环变量更新]

语法要点:

  • • while 是关键字,后面跟一个条件表达式。
  • • 条件后面必须加冒号 :。
  • • 循环体必须缩进(通常4个空格)。
  • • 循环体内一般需要改变条件中涉及的变量,否则可能变成无限循环。
  • • 当条件变为 False 时,循环结束,程序继续执行后面的代码。

三、while循环的执行流程

  1. 1. 判断条件是否为真。
  2. 2. 如果为真,执行循环体内的代码。
  3. 3. 执行完循环体后,再次判断条件。
  4. 4. 重复步骤1-3,直到条件为假,退出循环。

可以用流程图表示:

       ┌─────┐       │ 条件 │<────┐       └──┬──┘     │          │        │     真 ┌─┴─┐ 假   │        ▼          │    执行循环体─────┘        │        ▼    更新循环变量        │        └─────────┘          (回到条件判断)

四、简单示例

示例1:打印1到5

i = 1while i <= 5:print(i)    i += 1# 输出:1 2 3 4 5

示例2:计算1到100的和

i = 1total = 0while i <= 100:    total += i    i += 1print(f"1到100的和:{total}")

示例3:倒计时

count = 10while count > 0:print(count)    count -= 1print("发射!")

五、循环变量更新

循环体内必须包含能改变条件结果的语句,否则条件一直为真,形成无限循环。

# 无限循环示例(千万别运行)whileTrue:print("停不下来了...")

要避免无限循环,确保循环变量朝着条件不成立的方向变化。


六、break语句——提前跳出循环

break 用于立即终止当前循环,不再执行循环体内剩下的代码,也不继续判断条件。

i = 1while i <= 10:if i == 5:break# 当i等于5时跳出循环print(i)    i += 1# 输出:1 2 3 4

应用场景: 在满足某个条件时提前结束循环,例如搜索到目标后停止。


七、continue语句——跳过本次循环

continue 用于跳过本次循环剩余的代码,直接进入下一次条件判断。

i = 0while i < 5:    i += 1if i == 3:continue# 跳过打印3print(i)# 输出:1 2 4 5

注意: 使用 continue 时要小心循环变量的更新位置,避免造成无限循环。


八、while-else 结构

Python 的 while 循环可以带一个 else 子句。else 中的代码在循环正常结束(即条件变为假)后执行,如果循环被 break 终止,则 else 不会执行。

i = 1while i <= 5:print(i)    i += 1else:print("循环正常结束")# 输出:# 1 2 3 4 5# 循环正常结束

如果循环被 break:

i = 1while i <= 5:if i == 3:breakprint(i)    i += 1else:print("循环正常结束")   # 不会执行# 输出:1 2

应用场景: 可以用来检查循环是否提前退出,例如搜索失败时的处理。


九、while循环的常见应用

9.1 数字累加/累乘

# 求 n 的阶乘n = int(input("请输入n:"))result = 1i = 1while i <= n:    result *= i    i += 1print(f"{n}! = {result}")

9.2 输入验证

反复要求用户输入,直到输入合法为止。

age = int(input("请输入年龄:"))while age < 0or age > 150:print("年龄无效,请重新输入")    age = int(input("请输入年龄:"))print(f"你的年龄是:{age}")

9.3 遍历列表(不常用,通常用for)

fruits = ["苹果", "香蕉", "橙子"]i = 0while i < len(fruits):print(fruits[i])    i += 1

9.4 猜数字游戏

import randomsecret = random.randint(1, 100)guess = Nonewhile guess != secret:    guess = int(input("猜一个1-100的数字:"))if guess < secret:print("猜小了")elif guess > secret:print("猜大了")print("恭喜,猜对了!")

9.5 处理用户选择(菜单循环)

choice = ''while choice != '0':print("\n1. 功能一")print("2. 功能二")print("0. 退出")    choice = input("请选择:")if choice == '1':print("执行功能一")elif choice == '2':print("执行功能二")elif choice == '0':print("程序结束")else:print("无效选择")

十、无限循环与退出条件

有时我们需要无限循环,直到用户主动退出或某个事件发生,可以用 while True 配合 break。

whileTrue:    cmd = input("请输入命令(输入quit退出):")if cmd == 'quit':breakprint(f"执行命令:{cmd}")

优点: 结构清晰,退出条件明确。


十一、while循环的嵌套

一个 while 循环内部可以包含另一个 while 循环,称为嵌套循环。

# 打印九九乘法表i = 1while i <= 9:    j = 1while j <= i:print(f"{j}×{i}={i*j}", end="\t")        j += 1print()   # 换行    i += 1

注意: 嵌套循环时,要确保内外循环的循环变量各自更新,避免相互干扰。


十二、常见错误与注意事项

12.1 忘记更新循环变量 → 无限循环

i = 1while i <= 5:print(i)# 忘记 i += 1

12.2 条件写反或逻辑错误

while i > 5:   # 如果i初始为1,永远不进入循环print(i)

12.3 在continue前忘记更新变量 → 无限循环

i = 1while i <= 5:if i == 3:continue# 跳过了i+=1,i一直为3,无限循环print(i)    i += 1

解决: 将更新放在continue之前,或用其他方式保证变量更新。

12.4 循环条件永远为真(且无break) → 无限循环

while1:   # 1永远为真print("无限循环")

12.5 死循环导致程序无响应

如果程序进入死循环,可以按 Ctrl+C 强制终止。


十三、while循环 vs for循环

特性
while循环
for循环
适用场景
循环次数不确定,依赖条件
遍历序列或已知次数
语法
while 条件:for 变量 in 可迭代对象:
风险
容易无限循环(需手动更新变量)
自动处理迭代,相对安全
灵活性
很高,可以表达任何循环
适合遍历

选择原则:

  • • 明确知道循环次数或遍历集合 → for
  • • 循环次数不确定,依赖条件 → while

十四、实战案例

案例1:银行取款机模拟

balance = 10000whileTrue:print("\n1. 查询余额")print("2. 取款")print("3. 存款")print("0. 退出")    choice = input("请选择:")if choice == '1':print(f"当前余额:{balance}")elif choice == '2':        amount = float(input("取款金额:"))if amount <= 0:print("金额必须大于0")elif amount > balance:print("余额不足")else:            balance -= amountprint(f"取款成功,剩余余额:{balance}")elif choice == '3':        amount = float(input("存款金额:"))if amount <= 0:print("金额必须大于0")else:            balance += amountprint(f"存款成功,当前余额:{balance}")elif choice == '0':print("谢谢使用,再见!")breakelse:print("无效选择")

案例2:猜数字游戏(带次数限制)

import randomsecret = random.randint(1, 100)attempts = 0max_attempts = 7while attempts < max_attempts:    guess = int(input(f"还剩{max_attempts - attempts}次机会,猜数字:"))    attempts += 1if guess == secret:print(f"恭喜!猜对了,用了{attempts}次")breakelif guess < secret:print("猜小了")else:print("猜大了")else:print(f"机会用完了,答案是{secret}")

这里用了 while-else 在循环正常结束(即尝试完所有次数)时给出提示。

案例3:用户登录(限制次数)

correct_username = "admin"correct_password = "123456"attempts = 0max_attempts = 3while attempts < max_attempts:    username = input("用户名:")    password = input("密码:")    attempts += 1if username == correct_username and password == correct_password:print("登录成功")breakelse:print(f"用户名或密码错误,还剩{max_attempts - attempts}次机会")else:print("尝试次数过多,账户已锁定")

案例4:打印图案(菱形)

n = 5# 行数i = 1while i <= n:# 打印空格    j = 1while j <= n - i:print(" ", end="")        j += 1# 打印星号    j = 1while j <= 2 * i - 1:print("*", end="")        j += 1print()    i += 1

十五、总结

  • • while 循环基于条件重复执行代码块。
  • • 必须确保循环条件最终会变为假,否则形成无限循环。
  • • break 立即退出循环,continue 跳过本次循环。
  • • while-else 在循环正常结束时执行 else 块。
  • • 常用于次数不确定的循环、输入验证、菜单循环等。
  • • 注意循环变量的更新,避免死循环。

记住: 写 while 循环时,心里默念“我是否让条件最终能变成假?” 这样才能写出安全可靠的循环。

最新文章

随机文章