五、嵌套循环学习笔记
2026-02-19
Python基础
type
Post
status
Published
date
Feb 19, 2026
slug
python-nested-loops-notes-5
summary
当我需要打印九九乘法表、处理二维表格时,才发现一个循环根本搞不定!这时候嵌套循环就派上用场了——它就是循环里面再套一个循环,让代码能够处理更复杂的多维问题。
tags
Python的逻辑处理
category
Python基础
icon
password
💡 学习感悟:当我需要打印九九乘法表、处理二维表格时,才发现一个循环根本搞不定!这时候嵌套循环就派上用场了——它就是循环里面再套一个循环,让代码能够处理更复杂的多维问题。
1. 为什么需要嵌套循环?
我的理解
在没有嵌套循环之前,如果要打印一个 3x3 的星号矩阵,我只能这样写:
这样写不仅代码冗长,而且如果要改变大小,需要修改很多地方!
嵌套循环的出现解决了这个问题——它让我们可以用两层循环分别控制行和列。
📝 我的理解:嵌套循环就像是时钟的时针和分针——时针走一格,分针要走完整的一圈。外层循环每执行一次,内层循环就会完整地执行一遍。
2. 嵌套循环的基本语法
2.1 for-for 嵌套
最常用的一种嵌套形式,两个 for 循环嵌套。
执行流程
简单示例
📝 我的理解:从输出可以看到,外层循环 i=0 时,内层循环 j 完整地执行了 0 和 1;然后外层 i=1,内层又完整执行一遍...这就是嵌套循环的执行特点!
2.2 while-while 嵌套
两个 while 循环嵌套,需要注意循环条件的更新。
示例
⚠️ 踩坑记录:使用 while 嵌套时,一定要记得更新循环变量!我曾经忘记写j += 1,结果程序陷入了无限循环,电脑风扇狂转...😅
2.3 for-while 混合嵌套
for 循环和 while 循环可以相互嵌套。
3. 嵌套循环的执行次数
3.1 执行次数计算
📝 我的理解:嵌套循环的总执行次数 = 外层循环次数 × 内层循环次数。所以嵌套循环的效率要特别注意,如果两层都是 100 次,那就是 10000 次执行!
3.2 多层嵌套
三层嵌套循环执行流程图:
4. 嵌套循环中的 break 和 continue
4.1 break 的作用范围
break 只跳出当前所在的循环,不会影响外层循环。
📝 我的理解:从输出可以看到,虽然内层循环被 break 了,但外层循环还在继续执行。break 就像是在当前这一层循环里按下了停止键,不会影响外面那层。
4.2 continue 的作用范围
continue 也只影响当前所在的循环。
4.3 跳出多层循环
如果需要跳出多层循环,可以使用标志变量或函数。
📝 我的理解:刚开始我想用 break 跳出两层循环,结果发现不行!后来学会了用标志变量或者把循环放到函数里用 return,这才是正确的做法。
5. 实际应用案例
综合应用流程图:
5.1 打印九九乘法表
九九乘法表执行流程图:
📝 我的理解:九九乘法表的关键是内层循环的范围要随着外层变化——第 i 行只打印 i 个式子,所以内层是range(1, i + 1)。
5.2 打印图形图案
📝 我的理解:打印图形的难点在于找规律。金字塔每行的空格数是height - i,星号数是2*i - 1。找到规律后,用嵌套循环就很容易实现了!
5.3 冒泡排序算法
冒泡排序执行流程图:
📝 我的理解:冒泡排序的核心思想是相邻元素两两比较,大的往后冒泡。外层循环控制轮数,内层循环负责每轮的比较。加上swapped标志可以提前结束,这是优化点!
5.4 遍历二维列表
5.5 查找质数
查找质数执行流程图:
📝 我的理解:查找质数时,内层循环只需要检查到sqrt(num)就可以了,这是一个重要的优化!如果 num 有因子,一定有一个小于等于它的平方根。
6. 嵌套循环的优化
6.1 减少循环次数
6.2 使用列表推导式
📝 我的理解:列表推导式可以把嵌套循环写得非常简洁,但要注意可读性。如果逻辑太复杂,还是建议用传统的循环写法。
7. 遇到的问题和解决
7.1 忘记更新循环变量
⚠️ 踩坑记录:这是我犯过最多次的错误!用 while 嵌套时,内层和外层的循环变量都要记得更新,否则就会陷入无限循环。
7.2 循环变量命名混淆
7.3 缩进错误
⚠️ 踩坑记录:Python 的缩进非常重要!我曾经把print()缩进错了位置,结果所有星号都打印在一行,或者每个星号都换一行...调试了好久才发现是缩进问题。
8. 核心知识点整理
8.1 嵌套循环的基本形式
- for-for 嵌套:最常用的形式
- while-while 嵌套:需要注意变量更新
- for-while 混合嵌套:灵活组合
8.2 执行特点
- 外层循环执行一次,内层循环完整执行一遍
- 总执行次数 = 外层次数 × 内层次数
- 注意性能问题,避免过多层嵌套
8.3 break 和 continue
- break:只跳出当前所在的那一层循环
- continue:只跳过当前所在循环的当前迭代
- 跳出多层循环:使用标志变量或函数
8.4 常见应用场景
- 打印二维表格和图形
- 处理矩阵数据
- 实现排序算法(冒泡排序)
- 查找质数等数学问题
8.5 优化技巧
- 减少不必要的循环次数
- 使用 continue 跳过无效迭代
- 复杂场景考虑使用列表推导式
8.6 常见错误
- while 嵌套忘记更新循环变量(无限循环)
- 循环变量命名冲突
- 缩进错误导致逻辑混乱
不会等吃屎.
- 编写程序,打印一个直角三角形(使用 * 号)
- 编写程序,打印一个空心菱形
- 编写程序,实现选择排序算法
- 编写程序,计算两个矩阵的乘积
Loading...
