Python中的循环结构:从入门到精通
Python中的循环结构:从入门到精通
掌握循环,让代码高效重复执行
前言
大家好!今天我们来聊聊Python编程中的一个核心概念——循环结构。还记得我第一次接触循环的时候,脑子里冒出的第一个念头是:“终于不用写100遍print了!”如果你也有过这样的想法,那这篇文章正是为你准备的。
一、什么是循环?为什么需要它?
生活中的循环
想象一下这些场景:
-
食堂阿姨:接过餐盘 → 询问菜品 → 打菜 → 递回餐盘,重复直到所有学生都打完饭
-
快递小哥:查看地址 → 赶往目的地 → 联系收件人 → 签收,重复直到所有快递送完
-
你的闹钟:每天早晨准时响起...(虽然你可能不想承认这个循环)
这些场景的共同点是:有条件地重复做同一类事情。程序解决实际问题,自然也需要这种能力——这就是循环。
循环的作用
举个简单的例子:女朋友生气了,要求你说100遍“老婆大人,我错了”。作为程序员,你会怎么写?
# 傻瓜式写法(谁这么写谁傻)
print("老婆大人,我错了")
print("老婆大人,我错了")
# ... 重复100次 ...
聪明一点的做法:
# 循环的优雅写法
for i in range(100):
print("老婆大人,我错了")
循环的核心作用:让代码高效地重复执行。
while 还是 for?选择指南
| 场景 | 推荐循环 | 原因 |
|---|---|---|
| 循环次数已知 | while | 条件控制更直观 |
| 循环次数未知 | for | 遍历序列更方便 |
| 遍历列表/字符串 | for | 语法简洁,自动处理索引 |
| 需要无限循环 | while True | 配合break灵活退出 |
我的小建议:初学时两种都要掌握,但实际开发中for循环的使用频率会更高,因为它更“Pythonic”。
二、while循环:条件驱动型选手
基本语法(三步走)
# ① 初始化计数器
i = 0
# ② 编写循环条件
while i < 100:
# 循环体
print("老婆大人,我错了")
# ③ 更新计数器
i += 1
💡 小知识:计算机世界里的计数器大多从0开始,这是C语言留下的传统,也是很多程序员“从0数数”习惯的由来。
执行流程图解
text
开始 → 初始化计数器 → 判断条件 → [条件成立] → 执行循环体 → 更新计数器 → 回到判断
↓
[条件不成立]
↓
结束
实战案例:累加求和
# 计算1到100的和
i = 1
result = 0
while i <= 100:
result += i # 等价于 result = result + i
i += 1
print(f"1~100累加后的结果:{result}") # 5050
一步步理解:
-
第1次:i=1, result=0 → result=0+1=1
-
第2次:i=2, result=1 → result=1+2=3
-
第3次:i=3, result=3 → result=3+3=6
-
... 直到 i=101 时条件不满足,循环结束
常见陷阱:死循环
# ❌ 错误示例:忘记更新计数器
i = 0
while i < 100:
print("这行会打印到天荒地老") # i永远是0,条件永远成立
# 缺少 i += 1
# ✅ 正确写法
i = 0
while i < 100:
print("只打印100次")
i += 1
三、break 和 continue:循环中的两大“控制开关”
这两个关键词就像循环里的“紧急按钮”和“跳过键”。
生活类比
想象你在吃5个苹果:
| 场景 | 对应关键词 | 效果 |
|---|---|---|
| 吃完第3个就饱了 | break | 终止循环,不再吃第4、5个 |
| 第3个苹果里有虫子 | continue | 跳过这个,继续吃第4个 |
break:终止整个循环
i = 1
while i <= 5:
if i == 4:
print("吃饱了,不吃了!")
break
print(f"正在吃第{i}个苹果")
i += 1
# 输出:
# 正在吃第1个苹果
# 正在吃第2个苹果
# 正在吃第3个苹果
# 吃饱了,不吃了!
continue:跳过本次,继续下一次
i = 0
while i < 5:
i += 1
if i == 3:
print("这个苹果有虫子,换一个")
continue
print(f"正在吃第{i}个苹果")
# 输出:
# 正在吃第1个苹果
# 正在吃第2个苹果
# 这个苹果有虫子,换一个
# 正在吃第4个苹果
# 正在吃第5个苹果
⚠️ 警告:使用
continue时务必注意计数器更新的位置!如果放在continue后面,会导致计数器不更新,从而产生死循环。
猜数字游戏(完整版)
import random
secret = random.randint(1, 10)
chances = 3
i = 0
while i < chances:
guess = int(input(f"猜猜数字(1-10),还剩{chances - i}次机会:"))
if guess == secret:
print("🎉 恭喜你,猜对了!")
break
elif guess > secret:
print("📈 猜大了")
else:
print("📉 猜小了")
i += 1
else:
# while循环也可以配合else使用
print(f"😭 游戏结束,正确答案是:{secret}")
四、for循环:遍历型选手
如果说while是“条件驱动”,那for就是“序列驱动”。for循环天生就是为遍历设计的。
基本语法
# 遍历字符串
str1 = 'python'
for char in str1:
print(char)
# 输出:
# p
# y
# t
# h
# o
# n
神奇之处:你不需要手动管理计数器,不需要关心序列长度,for循环会自动处理一切!
range():生成数字序列的神器
range()是for循环的最佳拍档:
# 三种用法
range(5) # 0, 1, 2, 3, 4(从0开始,不包括5)
range(2, 8) # 2, 3, 4, 5, 6, 7(从2开始,不包括8)
range(1, 10, 2) # 1, 3, 5, 7, 9(步长为2)
# 口诀:只顾头,不顾尾,步长默认为1
实战:使用for循环求和
# 1到100的和(一行代码?也不是不行)
result = 0
for i in range(1, 101):
result += i
print(f"1~100的和:{result}")
# 偶数和
result = 0
for i in range(2, 101, 2): # 直接从2开始,步长为2,更优雅!
result += i
print(f"1~100的偶数和:{result}")
用户登录案例(3次机会)
for attempt in range(3):
username = input("账号:")
password = input("密码:")
if username == 'admin' and password == 'admin888':
print("✅ 登录成功")
break
else:
print(f"❌ 登录失败,还剩{2 - attempt}次机会")
else:
print("🔒 登录失败,账号已被锁定")
五、for...else:一个被低估的特性
很多人不知道Python的循环还能配合else使用。这个特性在其他语言中很少见,但用好了非常优雅。
核心规则
-
循环正常结束(没有遇到
break)→ 执行else中的代码 -
循环被
break终止 → 跳过else
实战:查找质数
num = int(input("请输入一个正整数:"))
if num < 2:
print("不是质数")
else:
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
print(f"{num}不是质数,它能被{i}整除")
break
else:
print(f"{num}是质数!")
这个写法的妙处:不需要额外设置一个found标志变量,代码更简洁!
查找字符示例
text = input("请输入字符串:")
search_char = 'a'
for ch in text:
if ch == search_char:
print(f"找到了'{search_char}'")
break
else:
print(f"未找到'{search_char}'")
总结
| 知识点 | 要点 | 注意事项 |
|---|---|---|
| while循环 | 条件满足时重复执行 | 别忘了更新计数器 |
| for循环 | 遍历序列 | 配合range()使用 |
| break | 终止整个循环 | 常用于提前退出 |
| continue | 跳过本次循环 | 注意计数器位置 |
| for...else | 循环正常结束后执行 | break会跳过else |
选循环的小技巧
text
需要遍历列表/字符串/范围? → for循环 不知道循环多少次? → while循环 需要无限循环等待某个条件? → while True + break
希望这篇文章能帮助你彻底掌握Python中的循环结构。编程是一门实践的艺术,看完之后一定要动手敲代码!如果有问题,欢迎在评论区交流讨论。
更多推荐



所有评论(0)