Python基础:第 09 篇 · while 循环:重复直到不满足

发布时间:2026/11/6 3:38:12
Python基础:第 09 篇 · while 循环:重复直到不满足

文章目录

  • 专栏导读
  • 第 09 篇 · while 循环:重复直到不满足
    • 本篇目标
    • 一、基本语法
    • 二、死循环与避免
      • 但 `while True` 也是有用的写法
    • 三、break 与 continue
    • 四、循环的 else 子句(比较少见但有用)
    • 五、实战:输入校验
      • 带次数限制的密码验证
    • 六、嵌套循环
      • 嵌套循环中的 break
    • 七、while vs for 怎么选
    • 常见坑
    • 本篇小结
    • 练习题
  • 总结

专栏导读

🔥🔥本文已收录于《30天学习Python从入门到精通》

🉑🉑本专栏专门针对于零基础和需要重新复习巩固的同学所准备的一套基础班教学,从0基础到精通Python,轻松掌握Python,欢迎各位同学订阅,专栏订阅地址:点我直达

🤞🤞此外如果您已工作,如需利用Python解决办公中常见的问题,欢迎订阅《Python办公自动化》专栏,订阅地址:点我直达

第 09 篇 · while 循环:重复直到不满足

作者:小庄学Python | 系列:《Python基础大全》 · 30 篇从零到能写项目

本篇目标

  • 掌握while循环的基本用法
  • 理解死循环是怎么产生的、怎么避免
  • 学会break/continue控制循环
  • 掌握循环else子句和输入校验套路

一、基本语法

count=0whilecount<5:print(f"第{count+1}次")count+=1print("循环结束")

三要素:

  1. 初始化变量(count = 0)
  2. 循环条件(count < 5)
  3. 更新变量(count += 1)

漏掉第 3 步就是死循环。


二、死循环与避免

# ❌ 死循环:count 永远不变count=0whilecount<5:print("卡住了")# ❌ 条件永远为真whileTrue:print("跑不完")

程序卡死时按Ctrl + C强制中断。

但while True也是有用的写法

配合break使用,适合"循环次数不确定"的场景:

whileTrue:cmd=input("输入命令(q退出):")ifcmd=="q":breakprint(f"执行命令:{cmd}")

三、break 与 continue

# break:直接跳出整个循环n=0whilen<10:ifn==5:break# 到 5 就停print(n)n+=1# 输出 0 1 2 3 4# continue:跳过本次,进入下一轮n=0whilen<10:n+=1ifn%2==0:continue# 偶数跳过print(n)# 输出 1 3 5 7 9

⚠️ 用continue时务必确认更新变量在 continue 之前,否则死循环。

# ❌ 死循环:n 永远不增加n=0whilen<10:ifn%2==0:continuen+=1

四、循环的 else 子句(比较少见但有用)

while...else:else块在**循环正常结束(没被 break)**时执行。

# 判断是否为质数n=17i=2whilei<n:ifn%i==0:print(f"{n}不是质数,能被{i}整除")breaki+=1else:print(f"{n}是质数")# 没被 break 才会执行

这是 Python 的特色语法,用来"找东西没找到"的场景很自然。


五、实战:输入校验

# 反复要求输入,直到合法whileTrue:age_str=input("请输入年龄(1-120):").strip()ifnotage_str.isdigit():print("请输入数字!")continueage=int(age_str)if1<=age<=120:breakprint("年龄范围不对!")print(f"你的年龄是{age}")

带次数限制的密码验证

password="888888"max_attempts=3attempts=0whileattempts<max_attempts:pwd=input("请输入密码:")ifpwd==password:print("登录成功")breakattempts+=1print(f"密码错误,还剩{max_attempts-attempts}次机会")else:print("账号已锁定")

六、嵌套循环

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

输出:

1×1=1 1×2=2 2×2=4 1×3=3 2×3=6 3×3=9 ...

嵌套循环中的 break

break只跳出它所在的那层循环,外层继续:

foriinrange(3):forjinrange(3):ifj==1:break# 只跳出内层print(i,j)

想一次跳出所有层,用标志变量:

found=Falseforiinrange(10):forjinrange(10):ifi*j==42:found=Truebreakiffound:break

七、while vs for 怎么选

场景选择
知道循环次数for
遍历序列(列表、字符串等)for
次数不确定,靠条件结束while
需要一直运行(服务器、菜单)while True+break

常见坑

坑说明
忘记更新循环变量死循环
continue前没更新变量死循环
条件写反一次都不执行
浮点数做循环变量精度误差导致次数不对,用整数计数
# ❌ 别这么干x=0.0whilex!=1.0:x+=0.1# 可能永远到不了精确的 1.0

本篇小结

  • while 三要素:初始化、条件、更新
  • break终止整个循环,continue跳过本次
  • while...else:正常结束才执行 else
  • 输入校验经典套路:while True+break

练习题

  1. 用 while 计算 1 到 100 的和。
  2. 猜数字游戏:随机生成 1~100 的数,用户反复猜,提示"大了/小了",猜中后输出猜了几次。
  3. 用 while 实现:不断输入数字累加,输入 0 时结束,输出总和与平均值。

下一篇:for 循环与 range——遍历的正确姿势。

总结

  • 希望对初学者有帮助

  • 致力于办公自动化的小小程序员一枚

  • 希望能得到大家的【一个免费关注】!感谢

  • 求个 🤞 关注 🤞

  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

  • 求个 ❤️ 喜欢 ❤️

  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

  • 求个 👍 收藏 👍

  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏