当前位置:首页>python>Python While 循环完全指南 | 从入门到进阶

Python While 循环完全指南 | 从入门到进阶

  • 2026-10-01 13:01:42
Python While 循环完全指南 | 从入门到进阶

阅读提示:本文包含 8 个实战案例,建议配合代码编辑器边学边练,预计阅读时间 15 分钟。可以参看我的视频进行学习,喜欢的话,关注,点赞,分享


📌 什么是 While 循环?

while 循环是 Python 中最基本的循环结构之一,只要条件为真,就会一直执行。

while 条件:
# 循环体(条件为True时执行)

🥉 基础篇(3个案例)

案例 1:最简单的计数器 ⏱️

场景:打印 1 到 5 的数字

count = 1
while count <= 5:
print(f"当前数字:{count}")
    count += 1# 别忘了自增,否则会无限循环!

print("循环结束!")

输出:

当前数字:1
当前数字:2
当前数字:3
当前数字:4
当前数字:5
循环结束!

💡 关键提醒:count += 1 这行代码至关重要!去掉它会导致死循环。


案例 2:用户输入验证 ✅

场景:要求用户输入正确的密码

password = "python123"
user_input = ""

while user_input != password:
    user_input = input("请输入密码:")
if user_input != password:
print("❌ 密码错误,请重试")

print("✅ 登录成功!")

运行效果:

请输入密码:123
❌ 密码错误,请重试
请输入密码:python123
✅ 登录成功!

💡 实用场景:表单验证、权限检查、游戏登录界面等。


案例 3:猜数字游戏 🎲

场景:系统随机生成数字,用户猜测

import random

target = random.randint(1, 100)  # 1-100的随机数
guess = 0
attempts = 0

while guess != target:
    guess = int(input("猜一个1-100之间的数字:"))
    attempts += 1

if guess < target:
print("📉 太小了!")
elif guess > target:
print("📈 太大了!")
else:
print(f"🎉 恭喜你!用了 {attempts} 次猜对了!")

💡 扩展思路:可以加入次数限制,超过3次直接退出。


🥈 进阶篇(3个案例)

案例 4:带条件的无限循环 🔄

场景:菜单系统,直到用户选择退出

whileTrue:  # 无限循环
print("\n===== 学生管理系统 =====")
print("1. 查看成绩")
print("2. 添加学生")
print("3. 退出系统")

    choice = input("请选择操作(1-3):")

if choice == "1":
print("📊 显示成绩列表...")
elif choice == "2":
print("➕ 添加新学生...")
elif choice == "3":
print("👋 再见!")
break# 跳出循环
else:
print("⚠️ 无效选择,请重新输入")

💡 核心技巧:while True + break 是构建交互式菜单的标准模式。


案例 5:嵌套 While 循环 ⭐⭐

场景:打印九九乘法表

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
...(直到9×9)

💡 理解要点:外层控制行,内层控制列,end="\t" 让输出在同一行。


案例 6:遍历列表(While vs For)📋

场景:用 while 循环遍历列表

fruits = ["苹果", "香蕉", "橙子", "葡萄"]
index = 0

while index < len(fruits):
print(f"第 {index+1} 个水果:{fruits[index]}")
    index += 1

对比 For 循环(更简洁):

for fruit in fruits:
print(f"水果:{fruit}")

💡 选择建议:遍历已知序列用 for;不确定次数时用 while。


🥇 高阶篇(2个实战案例)

案例 7:文件逐行读取 + 错误处理 📁

场景:读取日志文件,处理异常并统计关键词

defanalyze_log(filename, keyword):
    count = 0
    line_num = 0

try:
withopen(filename, 'r', encoding='utf-8') as file:
whileTrue:
                line = file.readline()  # 逐行读取
ifnot line:  # 读到文件末尾
break

                line_num += 1
if keyword in line:
                    count += 1
print(f"行 {line_num}: {line.strip()}")

except FileNotFoundError:
print(f"❌ 文件 {filename} 不存在")
return0

print(f"\n📈 统计:共找到 {count} 处 '{keyword}'")
return count

# 使用
# analyze_log("app.log", "ERROR")

💡 高阶技巧:readline() 配合 while 适合处理大文件,不会一次性占用大量内存。


案例 8:多线程爬虫速率控制 🕷️

场景:爬虫请求频率限制(每秒最多3次)

import time
from collections import deque

classRateLimiter:
def__init__(self, max_requests=3, time_window=1):
self.max_requests = max_requests  # 最大请求数
self.time_window = time_window    # 时间窗口(秒)
self.requests = deque()           # 记录请求时间

defallow_request(self):
        now = time.time()

# 清理过期请求记录
whileself.requests andself.requests[0] < now - self.time_window:
self.requests.popleft()

# 检查是否超过限制
iflen(self.requests) < self.max_requests:
self.requests.append(now)
returnTrue
else:
# 计算需要等待的时间
            wait_time = self.requests[0] + self.time_window - now
print(f"⏳ 速率限制,需等待 {wait_time:.2f} 秒")
            time.sleep(wait_time)
returnself.allow_request()  # 递归重试

# 使用示例
limiter = RateLimiter(max_requests=3)

urls = ["url1", "url2", "url3", "url4", "url5"]
for url in urls:
    limiter.allow_request()
print(f"🌐 正在抓取:{url}")
# 这里放实际的请求代码

💡 应用场景:API 限流、爬虫防封、服务器负载保护。


🎯 常见错误与避坑指南

错误类型
示例代码
后果
解决方案
死循环while i < 5: print(i)
程序卡死
确保循环条件会变为 False
忘记缩进while True: print("ok")
(无缩进)
语法错误
严格遵循 4 空格缩进
变量未初始化while i < 5:
(i未定义)
NameError
循环前初始化所有变量
无限递归
函数内调用自身无终止条件
栈溢出
设置明确的终止条件

📝 总结:While 循环使用场景

✅ 适合使用 While:
   ├── 用户交互式输入(直到输入正确)
   ├── 不确定循环次数(如猜数字)
   ├── 无限循环 + break 控制(菜单系统)
   ├── 逐行处理大文件
   └── 需要复杂条件控制的场景

❌ 不适合使用 While:
   ├── 已知固定次数的遍历(用 for)
   └── 简单的列表/字典遍历(用 for)

🚀 课后练习

  1. 练习1
    :用 while 实现倒计时功能(从10数到0,每秒打印一次)
  2. 练习2
    :实现一个简单的 ATM 机系统(查询余额、取款、存款、退出)
  3. 练习3
    :用 while 实现二分查找算法

📚 推荐阅读:关注本公众号,回复「python」获取更多教程!

💬 互动话题:你在使用 while 循环时踩过哪些坑?欢迎在评论区留言!

最新文章

随机文章