嵌套
里面再套一层。选择里再选择,循环里再循环。
它是什么
嵌套 就是里面还有一层。 选择里再选择。 循环里再循环。
读的时候从外往里。 先过大门,再过小门。
套娃、饭盒、书包里的笔袋,都是嵌套。 程序用 缩进 把这一层一层写在脸上。
名字从哪来
嵌套的英文是 nesting。 nest 是鸟巢。 小鸟的巢还可以套在更大的树洞里,一层包一层。
数学里早有括号嵌套:最里面的括号先算。 程序把这个画面用到结构上。 不是算式里的括号,而是「一块代码住在另一块里面」。
很多语言用 {} 表示内外。
Python 用缩进。
所以嵌套在 Python 里特别看得见:每深一层,左边多空 4 格。
它怎么工作
嵌套分支
if age >= 6:
if has_ticket:
print("可以进馆")
else:
print("请先买票")
else:
print("年龄不够")外层问年龄。
够了再问票。
else 对齐谁,就跟谁。
要精确提示时,嵌套比一个长 and 更清楚。
见 分支。
简单条件也可以用 and / or 压成一层。
哪一种更像人话,就用哪一种。
嵌套循环
for row in range(3):
line = ""
for col in range(4):
line = line + "*"
print(line)外圈走一步。 内圈走完整一轮。 3 行 4 列就是 12 次内圈。
画表格、排座位、找两个数的搭配,都常用嵌套循环。 那是枚举,和 算法 有关。
break 默认只离开当前这一层。
内层 break,外层还可以继续。
两层、三层刚刚好。 每层只问一件事。 太深会看花眼。
生活里在哪里
- 进公园:先过大门检票,再过小门进游乐区。
- 填表格:大项「家庭信息」里面还有「家长姓名」。
- 俄罗斯套娃:打开一个,里面还有一个。
- 课表:一周套五天,一天套几节课。
- 图书馆:楼层里有房间,房间里有书架,书架上有书。
找书时你不会一次打开所有抽屉。 你先选楼层,再选书架。 这就是从外往里。
和相近概念的差别
嵌套描述结构:里面还有里面。 缩进是记号:用空格画出这个结构。 分支、循环是零件:被套在里面的常常是它们。
and 可以把两个条件写在同一层。
嵌套 if 可以在中间插入不同的提示。
「年龄不够」和「请先买票」不是同一句话,嵌套就比一个长条件更合适。
循环 套循环,次数是相乘的。 3 乘 4 是 12,不是 7。 这和顺序执行几句不是一回事。
常见误会
误会 1:内外层缩进一样,电脑分不清谁套谁。
里面必须再空一层。
误会 2:else 跟错 if。
用眼睛沿左边对齐。 对齐谁,就跟谁。
误会 3:没估次数,嵌套循环跑得比想的多。
外圈次数乘内圈次数。 先口算一下。
误会 4:以为内层 break 会让整个程序结束。
它通常只离开当前这一层循环。
误会 5:套得越深越高级。
太深难读。 能拆成函数,或能用 and 说清的,不必硬套。
想知道更多
- 书:潘洪波《小学生 Python 趣味编程》(用进门、检票这类双重判断练嵌套)。
- 书:埃里克·马瑟斯《Python 编程:从入门到实践》(循环和条件叠在一起的例子,适合和家长对着缩进读)。
未登录时不会保存学习进度