DSE ICT|Python 程式基础:十节备课指引(变数、循环、函数、除错)
- 2026-11-05
学生看得明范例,但一开新档就写不出来,因为他们把程式当成“要背的语法”而不是“一步步的指令”。本课只做一件事:用 1 至 10 求和这条题,把变数、循环、函数三层依次加上去,令学生同一题由三行写到十行,并且每次改动都能讲出原因。
本堂目标 学生能够:(1) 用变数储存并更新一个累加值,讲出每一行执行后变数的值;(2) 用 for 循环配合 range 完成重复运算,并正确设定起点与终点;(3) 把重复逻辑包成函数,传入参数并取回结果,并用一个测试值验证。
01 先备知识(开课前 3 分钟快检)
以下任何一项未过关,本堂就会卡住,先补该项:
| 技能 | 快检题 | 过关标准 |
|---|---|---|
| 输入输出 | print 与 input 分别做什么? | 输出到萤幕/由键盘取字串 |
| 资料类型 | input 取回的数字为何要转换? | input 回传字串,要 int() 转整数 |
| 缩排 | Python 用什么表示同一组指令? | 缩排,通常是四个空格 |
02 课堂流程(45 分钟)
| 时间 | 环节 | 导师做什么 | 学生做什么 |
|---|---|---|---|
| 0-6 分钟 | 先读一段错的程式 | 投影一段跑错的求和程式,叫学生找错 | 学生指出至少一个错处 |
| 6-14 分钟 | 变数是一格一格的盒 | 用 total = total + i 逐格示范,写出每轮的值 | 学生手写三轮的 total 值 |
| 14-24 分钟 | for 与 range | 讲 range(1, 11) 为何是 1 到 10,起点包含、终点不包含 | 学生改写成 1 至 100 并核对 5050 |
| 24-32 分钟 | 包成函数 | def total_to(n) 加 return,强调 return 与 print 的分别 | 学生把求和包成函数并呼叫一次 |
| 32-40 分钟 | 测试与除错 | 用 1、10、100 三个输入测试,其中一个故意失败 | 学生找出失败的那个并修正 |
| 40-45 分钟 | 离场检查 | 收回三题,只读答案 | 独立作答 |
03 讲解脚本(照着说就可以)
第一幕:由一段错的程式开场
不要由语法开始。投影一段五行的求和程式,里面有三个错:total 未初始化、range 写成 range(1, 10)、缩排少一格。叫学生两人一组找错,再把他们的发现写回黑板。
这样做的目的是令学生知道:程式设计大部分时间是找错,而不是由零开始写。找错能力一旦建立,他们就不再怕空白档案。
这样做的目的是令学生知道:程式设计大部分时间是找错,而不是由零开始写。找错能力一旦建立,他们就不再怕空白档案。
学生做:找出三个错处,并讲出每个错会导致什么后果。
第二幕:变数:一格一格的盒
在黑板上画一个方格写 total,然后逐轮更新:第 1 轮 total 由 0 变 1,第 2 轮由 1 变 3,第 3 轮由 3 变 6。要求学生自己写出第 10 轮的结果,答案是 55。
学生最常犯的错是把 total = total + i 读成数学等式。要讲清楚:右边先算,再放回左边的格。这个“先算后放”的讲法,比讲 assignment operator 有效得多。
学生最常犯的错是把 total = total + i 读成数学等式。要讲清楚:右边先算,再放回左边的格。这个“先算后放”的讲法,比讲 assignment operator 有效得多。
学生做:填一张十行表,写出每轮 i 与 total 的值。
第三幕:for 与 range:起点包含、终点不包含
range(1, 11) 产生 1 到 10 十个数,这是学生最容易失分的地方,因为他们会写 range(1, 10) 而少了 10。用一行 print(list(range(1, 11))) 即场示范,把 10 个数印出来,比任何解释都清楚。
接着把题目由 1 至 10 改成 1 至 100,答案 5050,让学生自己按一次。同一条题目换一个数,学生就知道公式不是重点,流程才是。
接着把题目由 1 至 10 改成 1 至 100,答案 5050,让学生自己按一次。同一条题目换一个数,学生就知道公式不是重点,流程才是。
学生做:改写成 1 至 100,并解释为何要写 101。
第四幕:包成函数:参数入、结果出
把求和逻辑包成 def total_to(n),里面用 range(1, n + 1),最后 return total。要强调两点:n + 1 是因为终点不包含;return 是把结果交出去,不是印出来。
示范 print(total_to(10)) 与 x = total_to(10) 的分别:后者可以再运算,前者只是显示。学生明白这一点之后,写后面的题目就不会把函数写成一大段 print。
示范 print(total_to(10)) 与 x = total_to(10) 的分别:后者可以再运算,前者只是显示。学生明白这一点之后,写后面的题目就不会把函数写成一大段 print。
学生做:把函数改写成可计算 1 至 n,并用 n = 10 验证得到 55。
第五幕:测试与除错:故意让它失败
给三个测试值:1、10、100,答案应该是 1、55、5050。然后把函数改成 range(1, n) 再跑一次,n = 10 会得到 45,正好少了 10。叫学生找出差额并解释原因。
这个“故意失败”的做法,令学生看见测试的价值:如果只测 n = 1,错的程式也会通过。这一节通常是整堂最安静、最专注的十分钟。
这个“故意失败”的做法,令学生看见测试的价值:如果只测 n = 1,错的程式也会通过。这一节通常是整堂最安静、最专注的十分钟。
学生做:找出 45 与 55 的差,并用一句话写出原因。
04 必教题型与步骤
| 题型 | 例子 | 步骤 | 答案 |
|---|---|---|---|
| 填空 | 给程式缺一行,补上正确语句 | 先想资料流,再想语法 | 缩排与变数名都正确 |
| 追踪 | 给程式与输入,写出输出 | 逐行写变数值,不要心算 | 每一行都写,包括没变的 |
| 改错 | 程式中有一个逻辑错 | 先用小输入测,再定位 | 指出行号与原因 |
| 撰写 | 由题目描述写一个函数 | 定义输入、处理、输出三段 | 有 return,有测试值 |
合理性检查(一定要教):合理性检查:(1) 1 至 10 的和是 55,1 至 100 是 5050,这两个数要背下来当检查点;(2) 若程式跑出 45,即是少加了一次,通常是 range 终点写错;(3) 若跑出无限次输出,即是循环变数没有更新;(4) 若出现 TypeError,先查 input 是否未转 int;(5) 每个函数至少要用两个不同输入测过,才算完成。
05 独立练习三题
| 题目 | 答案 | 想观察什么 |
|---|---|---|
| 追踪 | 写出 1 至 10 求和程式每轮的 total | 核对第 1、2、10 轮 |
| 改错 | 把 range(1, 10) 改成正确版本并解释 | 核对是否讲出终点不包含 |
| 撰写 | 写 total_to(n) 并用 n = 100 验证 | 核对回传 5050 |
06 学生常见错误与纠正句
| 错误 | 学生通常这样写 | 导师这样说 |
|---|---|---|
| total 未初始化 | 直接写 total = total + i | “total 第一轮仲未存在,你要先俾他一个 0。” |
| range 终点写错 | 写 range(1, 10) 少了 10 | “你𠮶个答案少了 10,range 终点不包,所以要写 11。” |
| print 当 return | 函数里只有 print,外层取不到值 | “print 系显示,return 系交货,你要边样?” |
| 缩排不一致 | 同一组指令一半四格一半两格 | “呢两行看落一样,但 Python 当他们不同组,对齐他。” |
07 家课建议(直接指到练习卷题号)
08 离场检查(最后 5 分钟)
| 题目 | 答案 | 判定 |
|---|---|---|
| 变数更新 | 先算右边,再放左边 | 讲不出就重做第二节 |
| range 边界 | 起点包含、终点不包含 | 边界错就重做第三节 |
| return 与 print | return 交结果,print 只显示 | 混淆就重做第四节 |
09 导师常问
要背语法吗?
不用背全部,只需记住赋值、for、def、return 四种句式的样子。
用哪个版本?
Python 3 写法即可,考试不要求特定版本,但 input 一定要转型。
写不出来怎样办?
先用中文写三个步骤:输入、处理、输出,再逐句翻成程式。
本页为 TutorZone 导师备课指引,内容由 TutorZone 团队编写;题目与流程为原创,并非任何学校或出版社的教材。


