/cn-tutor-prep-s3-ict-python-basics/
/cn-tutor-prep-s3-ict-python-basics/
简体版
2
一般查询: info@TutorZone.com.hk
办公时间: 星期一至六 - 上午 9 时至下午 6 时
WhatsApp 星期一至日 - 24 小时
人手接听: +852 6828 1809
实时客服: +852 9061 3106

中三 ICT|Python 程式设计入门 备课指引(导师用)|变数、input 转换、range 界线与干跑

中三 ICT|Python 程式设计入门 备课指引(导师用)|变数、input 转换、range 界线与干跑

  • 2026-11-11

学生写得出一行 print,却讲不出为什么 total 会变成 55;不是语法问题,是脑里没有“每圈改一次”的画面。这一堂用一张干跑表,把循环由咒语变成可追踪的步骤。

本堂目标 学生能够:① 讲出变数是名字贴在值上、a = a + 1 是先算右边再贴回左边;② 用 range(1, 11) 算出 1 至 10 的总和 55,并讲出为何不是 11 个数;③ 用干跑表逐圈写出 i 与 total 的值,找出 off-by-one 与忘记 int() 两类错误。

01 先备知识(开课前 3 分钟快检)

以下任何一项未过关,本堂就会卡住,先补该项:

技能 快检题 过关标准
整数与平均 1 加到 10 是多少?平均又是多少? 55;平均 5.5
英文关键字 for 与 while 分别暗示什么? for 逐个取值;while 条件成立就继续
赋值方向 a = 3 与 3 = a 哪个合法? 前者合法,等号是把右边的值放进左边的名字

02 课堂流程(45 分钟)

时间 环节 导师做什么 学生做什么
0–5 分 先估后算 问“total = 0 之后跑十圈加 i,total 最后是多少”,先写下估计 多数估 10 或 100,暴露未追值
5–13 分 变数是贴纸 示范 a = 1;a = a + 1,强调右边先算,再贴回左边 写出 a 两次的值
13–26 分 range 的上下界 写 range(1, 11) 与 range(10),列出两者产生的数,指出右边界不包 列出两组数字
26–34 分 干跑表 黑板画 i 与 total 两栏,逐圈填到第十圈,得出 55 自己填三圈
34–41 分 两类错误 示范忘记 int() 与 range(1, 10) 的后果,各改一次 讲出两个错误的分别
41–45 分 离场检查 收三条答案,即场标正确/半对/错 交出三条答案

03 讲解脚本(照着说就可以)

第一幕:第一幕:等号不是相等,是贴上去

“a = 1,然后 a = a + 1,a 变成 2。为什么?因为等号右边先算,1 加 1 等于 2,再把 2 贴到名字 a 上。所以 a = a + 1 不是矛盾,是‘拿旧值算新值’。学生最常问这句是否写错,一问就知他未建立这个画面。 total = 0;total = total + i 同理:每一圈都用上一圈的 total 加今圈的 i,再贴回去。程式不是一次过算完,是一圈一圈把值改掉,所以要追值就要逐圈抄。”

右边先算,再贴回左边;每圈都改一次。

第二幕:第二幕:range 的右边界永远不包

“range(1, 11) 产生 1 至 10,共十个数;range(10) 产生 0 至 9,也是十个。两种写法都数十次,但起点不同。学生写 range(1, 10) 就只得九个数,总和会变成 45,少了 10。这个错叫 off-by-one。要验证很简单:把 list(range(1, 11)) 印出来数一数,或者用公式 首项加末项乘项数除二 核对:(1 + 10) × 10 ÷ 2 等于 55。算出来的答案与程式不同,就一定是界线或圈数出错。”

range(1, 11) 是 1 到 10;右边界不包,这是 off-by-one 的来源。

第三幕:第三幕:干跑表是最快的除错工具

“程式不对,多数不是电脑坏,是你心里跑的版本同电脑跑的不同。干跑表只有几栏:圈数、i、total、输出。第一圈 i 是 1、total 由 0 变 1;第二圈 i 是 2、total 变 3;第三圈 total 变 6。一直填到第十圈,total 是 55。填到第三圈你就会发现模式:total 每圈加 i。若程式印出 45,看表就知道少跑一圈,回去查 range。除错不是不停改,是先确定每一圈应该是几多。”

逐圈抄 i 与 total,错在第几圈一眼看得出。

04 必教题型与步骤

题型 例子 步骤 答案
输出预测题 total = 0;for i in range(1, 6):total = total + i;print(total) 印出什么? ① 列出 range 产生的数 ② 逐圈加总 ③ 用公式核对 15(1+2+3+4+5),公式 (1+5)×5÷2 也是 15
找错题 n = input(“请输入数字:”);print(n + 1) 为什么报错? ① 看 input 的回传型别 ② 指出是字串 ③ 加 int() 转换 ④ 补一句错误处理 input 回传字串,字串不能加整数;改为 int(input(…))
干跑表题 x = 3;while x > 0:print(x);x = x – 1 会印出什么? ① 写条件 ② 逐圈列 x ③ 指出何时停 3、2、1;当 x 变 0,条件 0 > 0 为假,循环停
写程式题 写一段程式读入五个分数,印出平均。 ① 用循环读五次 ② 每次 int() 转换并累加 ③ 除以 5 ④ 用 round 控制小数位 total = 0;for i in range(5):total = total + int(input());print(round(total / 5, 2))
合理性检查(一定要教):合理性检查:1 加到 10 是 55,不是 45(45 是 1 到 9);1 加到 100 是 5050;平均 55 除以 10 是 5.5,答 55 就是忘了除;range(1, 11) 是十个数,答十一个就是把右边界当包含;7 // 2 是 3、7 % 2 是 1,两个一起写才对得上。任何总和大过圈数乘最大值的结果,都代表多跑了圈。

05 独立练习三题

题目 答案 想观察什么
total = 0;for i in range(1, 101):total += i 之后 total 是多少? 5050 是否用 (1+100)×100÷2 核对
为什么 print(“5” + 1) 会报错,print(int(“5”) + 1) 不会? 前者是字串加整数,型别不符;后者先转成整数 是否能讲出型别而不是只说“要加 int”
把 while 循环写成永远不会停的版本,再改回正常。 条件永远为真(例如 x = x + 1 而条件是 x > 0);改为 x = x – 1 是否讲出“条件最终要变假”

06 学生常见错误与纠正句

错误 学生通常这样写 导师这样说
忘记 int() 转换 “n = input();print(n + 1)” “input 给你的是文字,不是数字。文字加一会报错。先 int() 转成整数,题目才跑得通。”
range 界线 off-by-one “range(1, 10) 就是 1 到 10。” “右边界不包。range(1, 10) 只得九个数,总和 45。要十个就写 range(1, 11)。”
缩排不一致 “循环体有些行缩两个空格、有些四个。” “Python 用缩排决定哪几行在圈内。同一层要对齐,否则电脑会当你写了两件事。”
把 = 当成相等 “if x = 5:” “单等号是赋值,比较要用两个等号。这一行电脑会直接报语法错误。”

07 家课建议(直接指到练习卷题号)

08 离场检查(最后 5 分钟)

题目 答案 判定
range(1, 11) 产生几个数? 十个,1 至 10 答错=下堂重教第二幕
1 加到 10 的总和是多少? 55 答错=下堂重教第三幕
input() 回传什么型别? 字串(str),要运算先 int() 或 float() 答错=下堂重教第一幕

09 导师常问

学生应该先学 for 还是 while?

先用 for,因为圈数明确、容易干跑;while 留到讲“未知圈数”时再引入,两者分工才清楚。

要背语法吗?

只需记 print、input、int、range、if、for 六个字的用法;其余靠查,重点是追值与除错的能力。

为什么一定要写干跑表?

因为考试与实习都会出现“程式跑得通但答案错”,只有逐圈追值才找得出是界线、型别还是缩排问题。

立即免费找导师导师登记 →

本页为 TutorZone 导师备课指引,内容由 TutorZone 团队编写;题目与流程为原创,并非任何学校或出版社的教材。

招募导师及兴趣班教练|学术、乐器、体育、艺术、STEM,免费登记,招生与配对交给平台。 了解详情 →