Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

PyFirst

04. 循环游乐场

上一章程序学会了"做选择"。但你想过没有——如果让你在屏幕上打印 1 到 100 的所有数字,你会怎么写?复制粘贴 100 行 print()?不不不,我们有更好的办法:循环

🎡 Python 魔法学院

你发现了一座永不停歇的旋转木马。它不是无序地乱转——而是精确地、一圈又一圈地运行,每转一圈完成一个任务。这就是循环的魔力。

今天你将学会「重复咒」——forwhile。一行咒语,重复千遍。从此告别复制粘贴,让你的代码像水车一样自动运转。


4.1 什么是循环?

✍️ 从"抄写课文"到"复印机"

想象一下:语文老师罚你把"我要认真写作业"抄写 100 遍。你可以:

循环,就是编程里的"复印机"。你写一次要做的事情,告诉计算机"重复多少次",计算机就自动帮你做——写一次,运行千百次

循环就是让一段代码反复执行。就像旋转木马:转到指定的圈数才停下来。

Python 有两种循环:


4.2 for 循环:按"清单"办事

for 循环会遍历一个序列中的每一个元素:

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

range() 是 for 循环的最佳拍档——它生成一串数字:

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

💡 range(start, stop) 从 start 开始,到 stop-1 结束。range(1, 6) 实际输出 1~5。

💡 常见误区:for 循环最容易踩的三个坑

❌ 错误写法😢 发生了什么?✅ 正确写法
for i in range(5) 里面的 print(i) 没缩进Python 不知道 print(i) 是循环的一部分,只执行了一次!for i in range(5): 下一行必须有 4 个空格缩进
缩进不一致(有的 4 格,有的 2 格)Python 报错 IndentationError,它会困惑"你到底想缩进多少?"统一用 4 个空格(按一下 Tab 键)
for i in 5: — 忘记写 range()报错 TypeError: 'int' object is not iterable,整数不能直接遍历!必须写 for i in range(5):
for i in range(1, 10): 以为输出 1~10range(1, 10) 实际输出 1~9,不包括 10!要输出 1~10 写 range(1, 11)

🧠 记口诀:for 循环三件套——冒号结尾、缩进一致、range 套数字。一个都不能忘!


4.3 实用案例:for 循环大显身手

打印九九乘法表(的一部分)

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

计算 1+2+3+...+100 的总和

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

传说高斯小时候就是用了类似的方法震惊了老师——现在你用一行循环就做到了!

统计字符串中的字母

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

4.4 while 循环:不达目的不罢休

while 循环在条件为真时一直执行

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

⚠️ 一定要确保条件最终会变成 False,否则程序会变成"永动机"——无限循环!如果你不小心写了 while True 而忘记加 break,刷新一下页面就好。

🤷 for vs while:什么时候用哪个?

每次学循环,大家都会问:"到底用 for 还是 while?"其实很好记:

场景用什么例子
你知道要重复多少次for“打印 1~100”、“遍历全班 40 个同学的名字”
你不知道要重复多少次while“不断猜数字直到猜对”、“等用户输入正确的密码”
有明确的"清单"或"范围"forfor name in ["小明","小红"]for i in range(10)
条件满足就一直做,条件不满足就停whilewhile not guessed:while hp > 0:

🎯 一句话总结:有范围用 for,有条件用 while。for 像"把购物清单上的东西全部买完",while 像"一直找直到找到厕所为止"。


4.5 break 和 continue:循环控制器

有时候你需要在循环中途"紧急刹车"或"跳过当前回合":

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

4.6 猜数字游戏升级版

while 循环 + break,我们来把之前的猜数字做成真正的互动游戏(这次用代码模拟):

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

💡 for...else 是 Python 一个特殊的语法:如果 for 循环是正常结束(没被 break),就会执行 else 部分。


4.7 双重循环:循环里的循环

循环里面还能套循环——想象一个旋转木马上每个座位还有自己的旋转杯。

🔍 嵌套循环是怎么执行的?一步步拆解

先看一个最简单的 2×3 嵌套循环:

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

计算机执行时,就像两个齿轮嵌套在一起:

外层 row=0 ──→ 内层 col=0 → print(0, 0)
         │    内层 col=1 → print(0, 1)
         │    内层 col=2 → print(0, 2)    ← 内层跑完,退回外层
         │
外层 row=1 ──→ 内层 col=0 → print(1, 0)
         │    内层 col=1 → print(1, 1)
         │    内层 col=2 → print(1, 2)    ← 内层跑完,外层也跑完,结束!

🧠 关键理解:外层循环每跑 1 次,内层循环就要跑完整的一轮。所以总次数 = 外层次数 × 内层次数。就像教室里的座位——每行(外层)有 6 个座位(内层),一共有 8 行,那就是 8 × 6 = 48 个座位。

现在来看实际的代码:

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

4.8 🎮 趣味挑战:完整九九乘法表

之前只打印了3的乘法口诀,现在来一张完整的!

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

💡 试试看:改 n = 5 就打印 5×5 乘法表。你能理解这个双重循环是怎么工作的吗?外层循环控制(i),内层循环控制(j)。


4.9 动手练习

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...
📋 参考答案(点击展开)
Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

4.10 本章小结

你学到了什么具体内容
✅ for 循环遍历序列/range,知道次数用 for
✅ while 循环条件为真就继续,不知道次数用 while
✅ range()range(n) 生成 0~n-1,range(a,b) 生成 a~b-1
✅ break立即终止循环
✅ continue跳过当前回合,继续下一次
✅ 嵌套循环循环里面套循环
✅ for...else正常结束(非break)时执行 else

🚀 下一章预告:单个变量只能存一个值,如果你想存全班同学的名字怎么办?下一章,我们学习列表——Python 最强大的数据收纳工具!

4.11 📚 参考资料

资源链接说明
Python 官方教程 — for/while/rangedocs.python.org/3/tutorial/controlflow.html#for-statements官方 for/while 循环和 range 函数详解
Real Python — Python for 循环realpython.com/python-for-loop从基础到高级的 for 循环完整指南
W3Schools — Python 循环w3schools.com/python/python_while_loops.asp交互式循环练习

本章内容基于 Python 官方教程 改编,遵循 PSF License 许可。