第 6 课 · 重复的力量

九九乘法表

让电脑自己重复干活:for 循环 + range() 让重复的代码只写一遍,最后打印出整张九九乘法表。

120 分钟完整闭环 5 个知识点 5 段示范代码 难度 ★★
🏠 学期课件主页 ← 上一课:多分支选择下一课:循环进阶 →
01

本课导览

先看这节课教什么、怎么分配 120 分钟,老师心里有底,课堂节奏就不乱。

第6课重复的力量
🎯 趣味项目:九九乘法表
循环for 语法range()循环变量 i累加器
🎯教学目标(学完这节课,学生能…)
  • 理解循环的概念,知道「让电脑重复做事」为什么比人手工重复更厉害;
  • 掌握 for 循环的基本语法:for 变量 in range(次数):;
  • 掌握 range() 的三种用法:range(5)、range(1,6)、range(1,10,2);
  • 理解循环变量 i 的作用,学会用累加器(total = total + i)求和;
  • 能使用 for 循环打印九九乘法表,体会「循环 + 计算」的威力。
🔑 教学重点
  • for 循环三件套:for + 循环变量 + in range()
  • range 的「顾头不顾尾」:range(1,6) 生成 1~5
🧗 教学难点 / 易卡点
  • 忘记冒号 / 循环体不缩进
  • range 结束值「多 1」记不住(range(1,11) 才有 1~10)
  • 累加器 total = total + i 的写法看不懂
🧰课前准备(老师 / 学生)
  • 老师:准备好「打印 100 遍你好」的现场对比(先假装要复制粘贴 100 行,再一行 for 搞定,制造反差);投影演示九九乘法表。
  • 学生:打开作品文件夹;今天作品保存为「第6课_九九乘法表.py」。
  • 课前小游戏:全班一起数数接力 1~20,感受「一遍遍重复」的枯燥——等会儿电脑一秒搞定。
⏱️120 分钟教学流程(建议时间轴,可按班级情况微调)
时间环节做什么 / 师生互动要点
0–5候课 · 设备检查开机 → 打开编辑器 → 确认作品文件夹就位。
5–12上节回顾 · 快问快答elif 怎么拼?它和多个 if 有什么不同?石头剪刀布三种结果怎么判断?
12–20情景导入老师说「把你好打印 100 遍」,学生假装复制粘贴叫苦连天——引出循环:一行代码搞定重复。
20–32知识讲解为什么要循环 → for + range 语法 → range 三种写法(含顾头不顾尾)→ 循环变量 i。
32–50示范代码 + 上机(示例1~3)打印 5 次你好 → range 变式实验 → 累加器算 1 到 10 的和,边敲边验证。
50–70主项目:九九乘法表先讲清 end="\t" 和 print() 换行 → 老师带读嵌套循环 → 学生敲 → 和数学课口诀对照。
70–85课堂练习 A/B练习 1 打印 1~20;练习 2 算 1~100 的和(5050);投屏典型错误找茬。
85–95挑战练习 C倒三角形图案;学有余力的同学试做 5! 阶乘。
95–105闯关小测range(5) 是几到几?range(1,11) 有没有 11?累加器为什么要先 total=0?……
105–115总结 · 保存作品齐读口诀;保存「第6课_九九乘法表.py」;预告第 7 课 while:次数不确定的循环。
115–120布置作业 · 预告布置必做/选做/思考;预告猜数字游戏完整版——猜几次可不一定哦!

时间轴把 2 小时切成 8 段:复习→导入→讲解→示范→上机→练习→检测→小结,每段都有明确产出。

02

情景导入 · 复习热身

先用 5 分钟把上节课的记忆叫醒,再用故事和类比把新知识挂到孩子已有的经验上。

🔁上节回顾 · 快问快答(建议 5 分钟)

问 1:石头剪刀布里,判断「你赢」用了哪些学过的东西组合条件?
→ and 和 or——三种赢法用 or 连,每种用 and(第 9 课正式学,今天先混个脸熟)。

问 2:if-elif-else 的「命中即停」是什么意思?
→ 从上往下找第一个成立的分支执行,后面的都不检查——多选一,只走一条路。

问 3:如果要你写 100 遍 print("你好"),你愿意吗?
→ 不愿意,太累了。今天学的循环就是来解救你的!

📖情景故事 · 今天学什么

小刚帮老师印奖状,100 张奖状每张都要写「恭喜你获奖」。他埋头写啊写,写到第 20 张手就酸了。

同桌小美说:你真笨!把奖状模板设好,打印机会自己一张接一张印——机器最擅长的就是不知疲倦地重复。

小刚恍然大悟:电脑也是这样啊!让电脑打印 100 遍「你好」,它眼睛都不眨。可是代码怎么写?难道要写 100 行 print?

老师出场:Python 里有个咒语叫 for 循环——你只要告诉它「重复几次、每次干什么」,剩下的事电脑全包了。

今天,你也要学会指挥电脑「一口气重复做一件事」。重复的力量,可大着呢!

💡生活类比:把新知识挂在旧经验上
🔁

循环 = 复读机

复读机把一句话反复播放;循环把一段代码反复执行,想放几遍你说了算。

重复执行
🔢

range() = 发号器

它像体育老师手里的号牌,从 0 开始一张张发:range(5) 发 0、1、2、3、4 共 5 张。

生成数字序列
🚶

循环变量 i = 报数的同学

每次循环 i 就换一个新值,像队列里挨个报数——报完一轮,循环就结束。

记录第几次
🐷

累加器 = 存钱罐

total = total + i 就像每投一枚硬币就数一次:罐子里的钱 = 原来的钱 + 刚投的。

逐步累加
🗝️本课核心口诀(板书 / 齐读)
核 心 口 诀for 循环三件套,变量 in range 不能少;
冒号缩进记得牢,重复干活它全包!
03

知识讲解

分小块讲透语法点,每一块都配生活类比 + 要点小结,讲完立刻口头小试。

🔁为什么需要循环?

如果要打印 100 次「你好」,难道要写 100 行 print 吗?当然不用!循环就是让电脑重复做同一件事。

人类做重复的事会累、会烦、会出错;电脑恰恰相反——它最喜欢重复,又快又不出错。

Python 有两种循环:for 循环(知道要循环几次时用)和 while 循环(不知道几次、靠条件停时用,下一课学)。

今天先学 for。记住:循环的代码只写一遍,但执行很多遍——这就是程序的「以一当百」。

重复的事交给循环for:知道次数用 for代码写一遍,执行 N 遍
💡 循环不是让电脑变聪明,而是让电脑把「笨功夫」下得又快又好。
🔢for 循环和 range()

for 循环最常用的搭档是 range()。看这行代码:for i in range(5): 意思是「让 i 依次等于 0、1、2、3、4,每等于一个数,就执行一次下面缩进的代码」。

所以 range(5) 会生成 0 到 4 共 5 个数——从 0 开始,到 5 之前结束,这叫「顾头不顾尾」。

range(1, 6) 生成 1、2、3、4、5(从 1 开始,到 6 之前结束);range(1, 10, 2) 生成 1、3、5、7、9(第 3 个数是步长,每次跳 2)。

想生成 1 到 10,必须写 range(1, 11)——结束值要比想要的多 1,这是新手最容易错的地方。

range(5) → 0~4,共 5 次range(1,6) → 1~5range(1,10,2) → 1,3,5,7,9顾头不顾尾
💡 「顾头不顾尾」是 Python 的通用规矩:结束的那个数永远轮不到。
🚶循环变量 i 和累加器

循环变量 i 每次循环都会变,我们可以用 i 的值——打印它,或用它计算。

i 只是惯例名字,叫 j、k、n 都行。在 for i in range(5) 里:第 1 次循环 i=0,第 2 次 i=1,……第 5 次 i=4。

想让「第 1 次」而不是「第 0 次」?打印 i + 1 就行——示例 1 的「第 i+1 次:你好」就是这个套路。

累加器是循环的经典用法:先准备一个罐子 total = 0,每轮执行 total = total + i,循环结束 total 就是总和。

i 每次循环自动 +1想从 1 数起:打印 i + 1累加器:total = total + i,先设 total = 0
💡 total = total + i 读作「新的 total = 旧的 total + i」。等号右边先算,再把结果装回左边的盒子。
04

示范代码 · 动手做

老师先带读代码、讲注释,再让学生亲手敲一遍——敲错正好学习调试。

Python示例 1 · 示例 1:用 for 打印 5 次「你好」
# 第6课:for 循环示例1——打印5次你好
for i in range(5):
    print("第" + str(i + 1) + "次:你好!")
运 行 结 果
第1次:你好!
第2次:你好!
第3次:你好!
第4次:你好!
第5次:你好!
✍ 数一数循环体(缩进的那行)一共执行了几次。把 range(5) 改成 range(50) 运行,感受电脑的「不嫌累」。

🤔 想一想:为什么打印的是「第 1 次」而不是「第 0 次」?i 从几开始?

Python示例 2 · 示例 2:range() 的三种用法
# 把 range 生成的数一个个打印出来看看
print("range(5):", end="")
for i in range(5):
    print(i, end=" ")

print("\nrange(1, 6):", end="")
for i in range(1, 6):
    print(i, end=" ")

print("\nrange(1, 10, 2):", end="")
for i in range(1, 10, 2):
    print(i, end=" ")
运 行 结 果
range(5):0 1 2 3 4 
range(1, 6):1 2 3 4 5 
range(1, 10, 2):1 3 5 7 9
✍ 亲手敲一遍,对照注释理解三种 range 的「顾头不顾尾」和步长。再把 end=" " 删掉运行,观察输出变成什么样。

🤔 想一想:range(1, 6) 为什么没有 6?想要 1~10 应该写 range(几, 几)?

Python示例 3 · 示例 3:累加器——算 1 到 10 的和
# 用累加器计算 1+2+3+...+10
total = 0          # 先准备一个空罐子
for i in range(1, 11):   # i 从1到10
    total = total + i    # 每轮往罐子里加一个 i
print("1到10的和是:" + str(total))
运 行 结 果
1到10的和是:55
✍ 把 range(1, 11) 改成 range(1, 101) 运行——1 加到 100 等于多少?看看你的电脑有多快。

🤔 想一想:如果 total 一开始不写 0(写成 total = 10),结果会变吗?罐子里原来有东西,结果当然不一样!

Python示例 4 · 主项目:九九乘法表(小预告:嵌套循环)
# 第6课主项目:九九乘法表
# 外层 i 控制行(第几行),内层 j 控制每行算几个
for i in range(1, 10):          # i: 1~9
    for j in range(1, i + 1):   # j: 1~i,每行只算到 i
        print(str(j) + "×" + str(i) + "=" + str(i * j), end="\t")
    print()                      # 一行结束,换行
运 行 结 果
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" 里的 \t,看看对齐效果怎么变;删掉 print() 试试会怎样。

🤔 想一想:循环里还套循环叫「嵌套循环」——外层走一次,内层走完一整轮。数一数:i=2 时内层 j 循环几次?

Python示例 5 · 示例 4:字符串重复——打印三角形
# "*" * i 表示把星号重复 i 遍
for i in range(1, 6):
    print("*" * i)
运 行 结 果
*
**
***
****
*****
✍ 把乘号后面的 i 改成 6 - i 运行,看看三角形是不是倒过来了。

🤔 想一想:字符串可以用 * 重复——那 "ha" * 3 会输出什么?猜完上机验证。

05

易错提醒

把最容易翻车的写法先亮出来,见一次、错一次、就会了。

易错点 1

for 行尾忘记冒号 / 循环体不缩进

✗ 错误写法
for i in range(5)
    print(i)
✓ 正确写法
for i in range(5):
    print(i)
为什么:for 语句行尾必须有英文冒号 :,循环体(要重复的代码)必须缩进。和 if 一样的规矩:冒号 + 缩进。
易错点 2

range 结束值多写 / 少写 1

✗ 错误写法
for i in range(1, 10):  # 想打印1~10
✓ 正确写法
for i in range(1, 11):  # 才能打印1~10
为什么:range 是「顾头不顾尾」:range(1, 10) 只到 9。想要包含 10,结束值要写 11。
易错点 3

累加器没有先清零

✗ 错误写法
for i in range(1, 11):
    total = total + i  # 报错
✓ 正确写法
total = 0
for i in range(1, 11):
    total = total + i
为什么:total 第一次被用之前必须存在——所以循环前要先写 total = 0(把罐子清空)。不然电脑找不到 total 这个变量。
06

课堂练习(分层)

基础题人人过关,进阶题鼓励尝试,挑战题给学有余力的孩子。参考答案给老师做巡视对照。

A组 · 基础(人人必做)课堂完成,老师巡回指导
  1. 用 for 循环打印 1 到 20,每个数字占一行。 (提示:range(1, 21) 才包含 20!)
  2. 运行九九乘法表,数一数它一共打印了多少个算式。 (提示:1+2+3+…+9 = 45 个。) 参考答案:可以用累加器数:count = count + 1。
B组 · 进阶(鼓励尝试)课堂完成,老师巡回指导
  1. 用 for 循环计算 1 到 100 的和,输出结果。 (提示:累加器 + range(1, 101)。) 参考答案:答案 5050,电脑一秒算完。
  2. 用 for 循环打印 1 到 20 之间所有的偶数。 (提示:if i % 2 == 0 判断偶数再打印;或 range(2, 21, 2)。)
C组 · 挑战(学有余力)课堂完成,老师巡回指导
  1. 用 for 循环打印倒三角形:5 行星号,逐行减少。 (提示:星号数 = 6 - i,即 "*" * (6 - i)。)
  2. 计算 5 的阶乘:5! = 5×4×3×2×1 = 120(用累乘器)。 (提示:先设 result = 1,循环里 result = result * i。) 参考答案:累乘器 = 累加器的乘法版。
07

闯关小测

收尾前 10 分钟,用口答 / 举手抢答把今天的关键点过一遍。

闯关 1先举手回答,再对答案

range(5) 生成哪几个数?

答案:0、1、2、3、4(共 5 个)。

💡 从 0 开始,到 5 之前结束。

闯关 2先举手回答,再对答案

想用 for 循环打印 1 到 10,range 该怎么写?

答案:range(1, 11)。

💡 顾头不顾尾:结束值要比 10 大 1。

闯关 3先举手回答,再对答案

range(1, 10, 2) 里的 2 是什么意思?

答案:步长:每次跳 2 个,生成 1、3、5、7、9。

💡 第三个参数是步长。

闯关 4先举手回答,再对答案

累加器求和前,为什么先写 total = 0?

答案:先把罐子清空,否则 total 不存在会报错,或带着旧值算错。

💡 新值 = 旧值 + 本轮的数。

闯关 5先举手回答,再对答案

for i in range(3) 循环体里的 print(i) 会执行几次?i 最后等于几?

答案:3 次;i 依次是 0、1、2。

💡 次数 = range 生成数的个数。

08

小结 · 作业与预告

用一句话带走今天的内容;作业分层布置,作品记得保存进成长档案。

🖍️本课小结(一句话 + 板书核心词)
一句话带走让电脑自己重复干活:for 循环 + range() 让重复的代码只写一遍,最后打印出整张九九乘法表。
for i in range(n):range(5)→0~4顾头不顾尾步长 range(1,10,2)循环变量 i累加器 total=total+iend="\t" 不换行
必做 · 人人过关
  1. 必做题:用 for 循环打印 1 到 20 之间所有的偶数(每个一行)。
  2. 把九九乘法表保存为「第6课_九九乘法表.py」放进作品文件夹(老师检查)。
选做 · 鼓励挑战
  1. 选做题:用 for 循环计算 5 的阶乘(5! = 5×4×3×2×1 = 120),用累乘器实现。
  2. 选做题:打印「数字三角形」:第 1 行 1,第 2 行 12,第 3 行 123……到第 9 行(提示:内层循环拼接字符串)。
思考 · 烧脑一下
  1. 思考题:range(10)、range(1, 10)、range(1, 10, 2)、range(10, 0, -1) 分别生成哪些数?最后一个负数步长很有意思,上机试试。
  2. 想一想:for i in range(3): 里如果不使用 i,它还有意义吗?循环的次数由谁决定?
👉 下节课预告:下一课《循环进阶》:while 循环 + break——适合「不知道要循环几次」的任务,做出能一直猜直到猜对的猜数字游戏!