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

文章目录

专栏导读

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

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

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

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

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

本篇目标

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

一、基本语法

python 复制代码
count = 0
while count < 5:
    print(f"第 {count + 1} 次")
    count += 1

print("循环结束")

三要素:

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

漏掉第 3 步就是死循环。


二、死循环与避免

python 复制代码
# ❌ 死循环:count 永远不变
count = 0
while count < 5:
    print("卡住了")

# ❌ 条件永远为真
while True:
    print("跑不完")

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

但 while True 也是有用的写法

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

python 复制代码
while True:
    cmd = input("输入命令(q退出):")
    if cmd == "q":
        break
    print(f"执行命令:{cmd}")

三、break 与 continue

python 复制代码
# break:直接跳出整个循环
n = 0
while n < 10:
    if n == 5:
        break          # 到 5 就停
    print(n)
    n += 1
# 输出 0 1 2 3 4

# continue:跳过本次,进入下一轮
n = 0
while n < 10:
    n += 1
    if n % 2 == 0:
        continue       # 偶数跳过
    print(n)
# 输出 1 3 5 7 9

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

python 复制代码
# ❌ 死循环:n 永远不增加
n = 0
while n < 10:
    if n % 2 == 0:
        continue
    n += 1

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

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

python 复制代码
# 判断是否为质数
n = 17
i = 2
while i < n:
    if n % i == 0:
        print(f"{n} 不是质数,能被 {i} 整除")
        break
    i += 1
else:
    print(f"{n} 是质数")     # 没被 break 才会执行

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


五、实战:输入校验

python 复制代码
# 反复要求输入,直到合法
while True:
    age_str = input("请输入年龄(1-120):").strip()
    if not age_str.isdigit():
        print("请输入数字!")
        continue
    age = int(age_str)
    if 1 <= age <= 120:
        break
    print("年龄范围不对!")

print(f"你的年龄是 {age}")

带次数限制的密码验证

python 复制代码
password = "888888"
max_attempts = 3
attempts = 0

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

六、嵌套循环

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

输出:

复制代码
1×1=1
1×2=2  2×2=4
1×3=3  2×3=6  3×3=9
...

嵌套循环中的 break

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

python 复制代码
for i in range(3):
    for j in range(3):
        if j == 1:
            break       # 只跳出内层
        print(i, j)

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

python 复制代码
found = False
for i in range(10):
    for j in range(10):
        if i * j == 42:
            found = True
            break
    if found:
        break

七、while vs for 怎么选

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

常见坑

坑 说明
忘记更新循环变量 死循环
continue 前没更新变量 死循环
条件写反 一次都不执行
浮点数做循环变量 精度误差导致次数不对,用整数计数
python 复制代码
# ❌ 别这么干
x = 0.0
while x != 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基础学习专栏

相关推荐
xiaoye-duck42 分钟前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型
一条大祥脚1 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
·present·1 小时前
CSAPP(lecture 13_02 Linking)
c语言·c++
10年前端老司机2 小时前
Milvus 8种检索能力实践
数据库·python·agent
FRing032 小时前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2
旖旎夜光2 小时前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
starzy19902 小时前
深入理解Scala嵌套函数:作用域封装之道
开发语言·scala
Sakura_j_h_2 小时前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc
大草原的小灰灰3 小时前
LLM应用的标准开发框架LangChain(八)- 中间件
python·中间件·langchain