第五单元-for循环结构 课件 2026-2027学年高教版中职信息技术基础模块(下册)
|
15页
|
6人阅读
|
0人下载
普通
内容正文:
for i in range(10):
for j in range(i):
print(i, j)
while condition:
while inner:
do_something()
nested = True
loops = 2
def outer():
def inner():
return
循环嵌套
NESTED LOOPS
for × while 双层循环精讲
Python 3
课堂精讲
01 / 15
同学们好,今天我们来学习 Python 中一个非常重要的概念——循环嵌套。之前我们已经学过了 for 循环和 while 循环,今天我们要把它们组合起来,让程序能做更复杂的事情。
<#>
本节课你将学到
LEARNING PATH
1
回顾基础
复习 for 与 while
单循环基本语法
温故而知新
Step 1 · Review
2
理解嵌套
嵌套循环概念
for 与 while 语法
执行流程拆解
Step 2 · Concept
3
实战案例
九九乘法表
打印星号三角形
经典案例拆解
Step 3 · Practice
4
避坑总结
常见错误排查
课堂练习挑战
核心要点回顾
Step 4 · Review
02 / 15
本节课我们分四步走:先回顾一下单循环的基础,然后理解什么是嵌套循环、语法怎么写,接着用九九乘法表和星号三角形两个实战案例来练手,最后总结常见错误和练习。
<#>
回顾:你已经会的循环
REVIEW
for 循环(计数循环)
for_example.py
for
i
in
range(
5
):
print
(i)
输出结果:
0 1 2 3 4
特点:
知道循环次数,自动计数
VS
while 循环(条件循环)
while_example.py
i =
0
while
i <
5
:
print
(i)
i +=
1
输出结果:
0 1 2 3 4
特点:
不知道次数,靠条件判断,手动更新
💡 思考:如果需要在一个循环里面再套一个循环,该怎么写?
03 / 15
先来回顾一下。左边是 for 循环,它是计数循环,知道要循环多少次,用 range 来控制,自动计数。右边是 while 循环,它是条件循环,不知道具体次数,靠条件判断,而且要手动更新计数器。大家想想,如果我们要打印一个九九乘法表,单循环够不够用?
<#>
为什么需要嵌套循环?
WHY NESTED?
外层走一步,内层走一圈
场景一:九九乘法表
9 行 × 每行不同数量
外层控制行数,内层控制列数
单循环只能打一行,打不了表
1×1=1
1×2=2 2×2=4
... 三角形状
场景二:打印图形
三角形、矩形、菱形
每行星号数量随外层变化
嵌套 = 一层控制行,一层控制列
* *
* * *
* * * *
场景三:二维数据
二维列表、矩阵、棋盘
先遍历每一行,再遍历每行元素
这就是嵌套的典型用途
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
一句话理解嵌套循环
外层循环(走一步)
内层循环(走一圈)
就像钟表:分针走一格,秒针要转完一整圈。
外层变量每变一次,内层就要从头到尾执行完所有次。
04 / 15
显然不够。单循环只能处理一维的、线性的任务。但现实中很多场景是二维的:比如九九乘法表有行有列,打印图形每行内容不一样,二维列表要先遍历行再遍历元素。这时候就需要嵌套循环——外层走一步,内层走一圈。就像钟表一样,分针走一格,秒针要转完一整圈。
<#>
for 嵌套:语法结构
FOR NESTED SYNTAX
for_nested.py
← 外层循环区域
for
i
in
range(
3
):
# 外层:控制行数
← 内层循环区域
for
j
in
range(
3
):
print
(f"i=
{i}
, j=
{j}
")
# 内层结束后,外层继续
print
("---")
⚠️ 关键规则
缩进决定层级:缩进多一级,就是内层循环的代码
语法要点
1
外层循环管"大方向"
i 控制第几行,外层每走一步
内层就要从头执行完所有次
2
内层循环管"小细节"
j 控制每行的第几个元素
内层循环是外层循环的"小跟班"
3
缩进是灵魂
Python 靠缩进判断层级
每层缩进 4 个空格,层级就清晰了
📝 记忆口诀
外一层,内一层,缩进多一级,里面再循环
05 / 15
来看 for 嵌套的标准写法。外层一个 for 循环,里面再缩进一个 for 循环。注意缩进很重要,Python 就是靠缩进来判断层级的。外层变量 i 控制大方向,比如第几行;内层变量 j 控制细节,比如每行的第几个元素。记住口诀:外一层,内一层,缩进多一级,里面再循环。
<#>
for 嵌套:执行流程
EXECUTION FLOW
示例代码:
for
i
in
range(
2
):
for
j
in
range(
3
):
print
(i, j)
外层循环 i = 0, 1
i = 0(第1轮)
内层 j = 0, 1, 2(跑完整一圈)
(0, 0)
(0, 1)
(0, 2)
i = 1(第2轮)
内层 j = 0, 1, 2(又跑完整一圈)
(1, 0)
(1, 1)
(1, 2)
执行规律
外层走一步,内层走完整一圈
i 每变一次,j 就要从 0 跑到 2,一个不落
总执行次数 = 外层次数 × 内层次数
本例:2 × 3 = 6 次,一共打印 6 行
内层先结束,外层才走下一步
内层没跑完,外层不会动,就像钟表秒针没转完,分针不走
06 / 15
那具体是怎么执行的呢?看这个例子,外层循环 2 次,内层循环 3 次。第一次 i=0 的时候,内层 j 从 0 跑到 2,执行完三次;然后 i 变成 1,内层又从头跑一遍,j=0、1、2。总共执行 2×3=6 次。关键规律:内层没跑完,外层不会动。
<#>
实战:九九乘法表
MULTIPLICATION TABLE
multiplication_table.py
外层:控制第几行(i = 1~9)
for
i
in
range(
1
,
10
):
内层:每行打印几个(j = 1~i)
for
j
in
range(
1
, i
+
1
):
print
(f"
{j}
×
{i}
={i*j}", end="
\t
")
print
() # 一行打完换行
🔑 为什么内层是 range(1, i+1)?
第 1 行只打 1 个:1×1=1
第 2 行打 2 个:1×2=2 2×2=4
...
第 9 行打 9 个,形成三角形
运行结果
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
💡 小技巧
end="\t" 让每个式子之间用制表符对齐,排版更整齐
07 / 15
来看最经典的例子——九九乘法表。外层 i 从 1 到 9,控制第几行。内层 j 从 1 到 i+1,为什么是到 i+1 呢?因为第 1 行只打 1 个式子,第 2 行打 2 个,...这样就形成了三角形。end="\t" 是让每个式子之间用制表符对齐,排版更整齐。大家看右边的运行结果,是不是就是我们熟悉的九九乘法表?
<#>
while 嵌套:语法结构
WHILE NESTED SYNTAX
while_nested.py
← 外层 while 循环区域
i =
1
while
i <=
3
:
# 每次外层开始,内层计数器重置
← 内层 while 循环区域
j =
1
while
j <=
3
:
print
(i, j)
j +=
1
# 内层结束后,更新外层计数器
i +=
1
⚠️ 最大坑:两个计数器都要手动更新,忘了就死循环!
while 嵌套要点
1
条件判断驱动
每次先判断条件是否成立
成立才执行,不成立就退出
2
计数器手动管理
外层有外层的 i,内层有内层的 j
每个循环自己更新自己的计数器
3
内层每次要重置
外层每走一步,内层 j 要从 1 开始
不重置的话,内层第二次就不跑了
和 for 嵌套的区别
for 自动计数,while 手动更新;结构一样,只是循环方式不同
08 / 15
再来看 while 嵌套。结构和 for 是一样的,外层 while 里面再放一个 while。但要注意几点:第一,两个计数器都要手动更新,外层 i 要自增,内层 j 也要自增,少一个就死循环;第二,每次外层循环开始前,内层计数器都要重置,从 1 开始,不能接着上次的值。
<#>
while 嵌套:执行流程
WHILE FLOW
示例:打印 2 行 3 列星号
i =
1
# 外层行号
while
i <=
2
:
j =
1
# 内层列号
while
j <=
3
: print("*", end=""); j+=1
外层 while(判断 i)
i = 1(第1行)
内层 while(判断 j = 1,2,3)
j=1 打印 *
j=2 打印 *
j=3 打印 *
i = 2(第2行)
内层 while(j 重置为 1,再跑一遍)
j=1 打印 *
j=2 打印 *
j=3 打印 *
和 for 的关键区别
每次都要先判断条件
for 自动计数到数就停,while 每次都要检查条件对不对
两个计数器都要更新
内层 j 自增,外层 i 也要自增,少一个就死循环
内层计数器要重置
外层每走一步,内层 j 都要从 1 开始,不能接着上次的值
09 / 15
while 的执行流程和 for 类似,但每次都要先判断条件。比如打印 2 行 3 列星号:i=1 时,判断 i<=2 成立,进入外层;然后 j=1,判断 j<=3 成立,打印星号,j 自增;j 跑到 4 的时候条件不成立,内层结束;然后 i 自增变成 2,再判断一次,内层再从头跑一遍。
<#>
实战:打印星号三角形
STAR TRIANGLE
star_triangle.py
i =
1
外层:控制行数(i = 1~5)
while
i <=
5
:
j =
1
内层:每行星号数(j = 1~i)
while
j <= i:
print
("*", end=" ")
j +=
1
print
() # 一行打完换行
i +=
1
🔑 为什么内层是 j <= i?
第 1 行打 1 个星,第 2 行打 2 个,... 第 5 行打 5 个
运行结果
* *
* * *
* * * *
* * * * *
📐 规律
外层决定行数,内层决定每行星号数量
内层循环次数 = 外层变量值,就能画出渐变图形
💡 进阶思考
如果想打印倒三角形,内层条件应该怎么改?
10 / 15
再练一个例子——打印星号三角形。外层控制行数,i 从 1 到 5。内层控制每行星号的数量,j 从 1 到 i。这样第 1 行打 1 个星,第 2 行打 2 个,... 第 5 行打 5 个,就形成了三角形。大家思考一下,如果想打印倒三角形,内层条件应该怎么改?
<#>
for 嵌套 vs while 嵌套
COMPARISON
for 嵌套
对比维度
while 嵌套
语法特点
自动计数,range 控制
简洁,不用手动更新
条件判断,手动更新
灵活,但要记得更新计数器
适用场景
知道循环次数
九九乘法表、打印矩阵、遍历列表
条件驱动的循环
游戏主循环、输入校验、直到满足条件
注意事项
安全,不容易错
主要注意缩进和 range 范围
容易踩坑
忘更新计数器 → 死循环!
✅ 选择原则:次数明确用 for,条件不确定用 while
11 / 15
那 for 和 while 到底怎么选呢?看这个对比表。for 适合知道循环次数的场景,语法简洁不容易错;while 适合条件驱动的场景,灵活但容易忘更新计数器导致死循环。记住原则:次数明确用 for,条件不确定用 while。
<#>
新手最容易踩的 3 个坑
COMMON ERRORS
1
缩进错误:内层代码没缩进去
for
i in range(3):
for j in range(3):
print(i, j)
# ❌ 内层for没缩进,变成外层只执行一次后才进内层
# ✅ 正确写法:
for
i in range(3):
for
j in range(3):
print(i, j)
2
计数器忘更新:死循环!
i =
1
while
i <= 3:
print
(i)
# ❌ 忘了写 i += 1,i 永远是 1,死循环!
# ✅ 正确写法:
i =
1
while
i <= 3:
print(i); i +=
1
3
内外层变量搞混:用同一个变量名
for
i in range(3):
for
i in range(3):
print(i)
# ❌ 两层都用 i,内层把外层的 i 覆盖了,逻辑全乱
# ✅ 正确写法:
for
i in range(3):
for
j in range(3):
print(i, j)
12 / 15
新手最容易犯三个错误:第一,缩进错了,内层代码没缩进去,逻辑就乱了;第二,while 嵌套里忘了更新计数器,直接死循环;第三,内外层用了同一个变量名,内层把外层的值覆盖了,逻辑全乱。大家写代码的时候一定要注意这三点。
<#>
动手试一试
PRACTICE
🌟 基础
EASY
任务一:打印 4×4 星号矩阵
用 for 嵌套打印一个 4 行 4 列的星号矩形
提示:外层控制 4 行,内层每行打 4 个星号
🌟🌟 进阶
MEDIUM
任务二:用 while 嵌套打印倒三角形
打印 5 行倒三角形,第一行 5 个星,最后一行 1 个星
提示:外层从 5 倒数到 1,内层循环次数 = 外层变量
🌟🌟🌟 挑战
HARD
任务三:找出 1~100 之间的所有质数
外层遍历每个数,内层用嵌套循环判断它有没有其他因数
提示:质数 = 只能被 1 和自己整除,用内层循环检查 2~n-1
13 / 15
现在大家动手练一练。基础题:用 for 嵌套打印 4×4 的星号矩阵。进阶题:用 while 嵌套打印倒三角形。挑战题:找出 1 到 100 之间所有的质数。大家先从基础题开始做,做完的同学可以尝试挑战题。
<#>
核心要点回顾
SUMMARY
🔁
语法结构
外层套内层
缩进决定层级
每层缩进 4 空格
🔄
执行流程
外层走一步
内层走一圈
内层跑完外层才动
⚖️
怎么选择
次数明确用 for
条件定用 while
两个都能嵌套,看场景
⚠️
避坑三件事
缩进别错
计数器别忘了更新
内外变量别重名
嵌套循环 = 外层走一步,内层走一圈
Nested Loops: Outer steps once, inner runs a full round
14 / 15
最后总结一下今天的四个要点:第一,语法结构——外层套内层,缩进决定层级;第二,执行流程——外层走一步,内层走一圈;第三,怎么选择——次数明确用 for,条件定用 while;第四,避坑三件事——缩进别错、计数器别忘了更新、内外变量别重名。核心就一句话:嵌套循环 = 外层走一步,内层走一圈。
<#>
for i in range(10):
for j in range(i):
print(i, j)
while True:
nested()
每一次循环,都是离目标更近一步
EVERY LOOP, ONE STEP CLOSER
下节课见 👋
Thank You
15 / 15
好,今天的内容就到这里。每一次循环,都是离目标更近一步。下节课见!
<#>
$