教案 答案 易错点与评价
本手册配合十二份学生任务单和课程网页使用。十二课从变量、运算、分支走向循环、模型与递推;每课45分钟,先预测再运行,最后用独立离堂题判断学生能否解释程序。
为学生准备可运行Python的课程页面或编辑器;第3、4课提前演示预置输入每行一个数。打印学生任务单时不附本手册。使用原课程检测时保留约定变量名。
课程适合Python初学者。若学生尚未掌握英文标点输入,先示范英文引号、括号、冒号及4空格缩进。每组两人时轮换“操作员”和“核验员”,但离堂题各自作答。
课程中的价格、人数、座位及优惠规则均为课堂模拟。第3课输出是预算余量,可为负数;第4课主任务为15/25/35元,20元变式另存、另验。
| 课次 | 学生保留的证据 | 本课关键判据 |
|---|---|---|
| 第1课 | 三组小票计算及一次修改说明 | 三组结果正确,能解释重新赋值后需重算。 |
| 第2课 | 0/40/41/47人测试表 | 全部正确,能给两种错误算法找反例。 |
| 第3课 | 三组输入与预算余量 | 全部正确,能说明输入转换和负余量。 |
| 第4课 | 四个年龄边界及分支名称 | 主规则正确,能解释12与18的归属。 |
| 维度 | 2分 | 1分 | 0分 |
|---|---|---|---|
| 计算与运行 | 规定样例均正确 | 提示后修正,仍缺部分验证 | 无法得到主要结果 |
| 测试证据 | 预测、运行、边界记录完整 | 有运行证据,预测或边界欠缺 | 只有答案,没有验证 |
| 解释与修改 | 能说明关键语句及修改原因 | 能描述结果,解释不完整 | 无法说明结果来源 |
| 独立迁移 | 独立完成离堂题 | 提示后完成部分 | 尚不能完成 |
建议8分记录过程,6分及以上且本课规定主样例全部正确,可判达标;只通过样例不等于理解。离堂题关键概念有错者仍需补练。量规用于反馈,不用于学生排名。
五个概念小步、M1、A1、A2及E1为必做。纸面S题与网页小步是同概念的替代或复核,课堂不必重复两套。B题有余力选一或课后完成,C题为课后挑战。网页测一测可课后补齐记录,45分钟课堂优先完成独立离堂E题。
| 课次 | 保留证据 | 关键判据 |
|---|---|---|
| 5 | 年级和预约四种组合 | and/or组合正确,能用反例解释。 |
| 6 | 1/7/21/0天完整提醒 | 编号连续,结束语一次。 |
| 7 | 前三轮轨迹与3/7/10/0天总量 | 初值在循环前,累计28/55正确。 |
| 8 | 1/3/5年与零利率对照 | 按当前余额更新,round只用于输出。 |
| 9 | 20/40/60年金额 倍数 固定增量 | 三种结果有单位,结论限于假设。 |
| 10 | 13/0/0/1年边界与前一年余额 | 能证明首次,条件相关变量会更新。 |
| 11 | 0/1/2/5/10级与变量追踪 | 不重不漏分类,0级约定和临时变量正确。 |
| 12 | 0至4盘计步与3盘合法移动 | 计数与移动分开验收,大整数不转浮点。 |
第8至10课的利率与增长率是课堂假设,不代表真实存款、商铺或学校基金收益。先确认本金、增长、追加、取出及时间约定,再解释程序结果。
每课5小步、主任务、两道基础与离堂题为必做。应用题有余力选一或课后完成,挑战题均为课后。第11课20级、第12课10与64盘检测可课后完成,课堂优先解释小规模并保留3盘合法移动证据。
主任务保留原变量名和输出。第5课检查布尔决策与预约状态,第6课检查运动提醒全文,第7至9课检查约定过程与结尾数字。第10至12课分别核对年数与余额、走法数、逐轮步数及公式。
若改变文案、规则或模型,应另存为变式,并按变式预期验收。原检测只服务原主任务;未通过时先分辨是错误,还是任务规则已经变化。
每课连续三页:教学流程、主任务与小步答案、分层答案与反馈。第1课从第3页开始,此后每课增加3页;第12课为第36至38页。第39页为第4课20元变式独立验收。
45分钟教学流程与诊断
把单价、数量、付款保存为变量,按顺序计算总价与找零。用两组修改数据验证同一程序,并解释重新赋值后为什么要重新计算。
• 能说出 price、count、money、total、change 各保存什么。
• 能按先总价后找零的顺序完成计算,并核对三组数据。
• 能解释变量重新赋值、数字相加与字符串拼接的区别。
适用范围 单价与付款为非负数,数量为非负整数;本课付款不少于总价。金额单位为元,数量单位为份,所有价格均为课堂模拟数据。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 展示6元×3份付50元的小票,要求先手算;明确价格为模拟数据。 | 写18与32,并指出三个会改变的数据。;观察谁把总价与找零混淆。 |
| 5—12分钟 | 用变量保存数据,逐行执行。完成S1至S3。 | 填写变量含义和运算符。;收集赋值方向和运算符错误。 |
| 12—17分钟 | 比较数字与字符串;追踪改count后total。完成S4与S5。 | 先预测再验证,标出total最后赋值位置。;能用赋值顺序解释18为何不变。 |
| 17—30分钟 | 组织M1;先手算三组,再补全程序逐组运行。 | 填写预测和运行记录,保留一次修改。;三组结果正确,第三组找零为0。 |
| 30—40分钟 | 完成A1与A2;有余力选一B题,C题留作课后挑战。 | 独立作答后与同桌交换解释。;检查表达式、单位及重算两项结果。 |
| 40—45分钟 | 发出E1;收取独立回答并简短反馈。 | 不看示例完成,勾选学习状态。;据离堂题安排下一课前的2分钟补练。 |
数据 price count money → total = price * count → change = money - total → print
= 先算右边 再保存到左边;数据更新后重新计算。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
price = 6
count = 3
money = 50
total = price * count
change = money - total
print("总价", total, "元")
print("找零", change, "元")| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 6元 / 3份 / 50元 | total = 18;change = 32 | 符合范围并与手算一致 |
| 8元 / 2份 / 20元 | total = 16;change = 4 | 符合范围并与手算一致 |
| 10元 / 5份 / 50元 | total = 50;change = 0 | 符合范围并与手算一致 |
L1-S1 保存单价,单位元。
L1-S2 填 *,总价等于单价乘数量。
L1-S3 填 -,用付款减总价。
L1-S4 分别输出 9 和 63;前者为数值相加,后者为字符串拼接。
L1-S5 total 仍为18;count更新后,total不会自动重新计算。
本课不讲输入函数和分支。将 = 解释为先计算右边,再保存到左边;不要用“永远相等”的说法。变量是对值的命名,不是会自动更新的公式。
L1-A1 输出7,先用旧值5计算5+2,再把7赋给a。
L1-A2 总价28元、找零22元;total = price * count;change = money - total。
L1-B1 在count = 4之后重新执行total = price * count和change = money - total,再打印。只改count或只重新计算total都不完整。
L1-B2 开放题。示例:古厝纹样书签9元/份,3份,付款30元;总价27元,找零3元。须说明单位、付款不少于总价,并保留运行证据。
L1-C1 total = 6 * 3 + 8 * 2 得34;change = 50 - total 得16。也可用有意义的变量名。
L1-C2 先打印18、32;更新count后必须重新计算total和change,再打印24、26。变量保存已算出的值,后续数据改变不会自动回算。
L1-E1 total = price * count 得18;change = money - total 得2。count改为3后total仍18,必须重新赋值才会变化。
错误 把赋值看成永远成立的等式。反馈 追问 total 最后在哪一行被赋值;逐行记录 count 与 total。 验收 在改count后重算total与change,并用6×4、付50验证。
错误 用带引号的数字参与计算。反馈 比较6+3与"6"+"3",要求先预测再运行。 验收 能说出数字与字符串的不同用途。
错误 先用尚未计算的 total 算找零。反馈 让学生按依赖关系排列数据、总价、找零、输出。 验收 顺序正确,显示结果同时标单位。
未达标:只用price = 3、count = 2、money = 10,逐行记录total与change,再改count为3重算。达标:完成B2的自拟小票并保留数据与输出。
45分钟教学流程与诊断
用整除和取余描述满车数与余下人数,再计算刚好够用的车数。用0、40、41、47人检查算法,学会用边界数据找错误。
• 能区分 /、// 和 % 的结果及含义。
• 能用给定整数公式计算车数,验证0、40、41、47人。
• 能找出只取整除结果和一律加1的反例。
适用范围 人数 students 为非负整数,每车可用座位 seats 为正整数。单位分别为人、座和辆;模拟调度仅计算学生座位,不含其他出行安排。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 回顾变量;提出47人每车20座,先画分组。 | 画20、20、7,给出3辆的猜想。;区分商与最终数量。 |
| 5—13分钟 | 对照 /、//、%,完成S1至S3。 | 预测并运行最小例子10与4。;用语义说出2.5、2、2的不同。 |
| 13—18分钟 | 完成S4与S5,提供整数公式,不要求全员独立推导。 | 补符号,检验9人4座。;确认能读括号与运算顺序。 |
| 18—31分钟 | 组织M1,特意把0、40、41、47并列。 | 逐组填预测、运行和修改记录。;既够用又不多租;0人结果0。 |
| 31—40分钟 | 完成A1与A2;有余力选一B题,C题留作课后挑战。 | 用反例反驳两种错误公式。;能以40和41准确说明错误。 |
| 40—45分钟 | 独立E1;说明下节课将允许使用者输入数据。 | 完成16与17人的边界检验。;边界判断不稳者补做8与9人。 |
students = seats × full + left
/ 除法结果 // 满车数 % 余下人数
buses = (students + seats - 1) // seats
前提 人数非负整数 座位正整数;0 40 41 47逐组核验。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
students = 47
seats = 20
full = students // seats
left = students % seats
buses = (students + seats - 1) // seats
print("满车数", full)
print("余下人数", left)
print("需要大巴", buses, "辆")| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 0 | full = 0;left = 0;buses = 0 | 符合范围并与手算一致 |
| 40 | full = 2;left = 0;buses = 2 | 符合范围并与手算一致 |
| 41 | full = 2;left = 1;buses = 3 | 符合范围并与手算一致 |
| 47 | full = 2;left = 7;buses = 3 | 符合范围并与手算一致 |
L2-S1 得到2.5;它是除法结果,不是足够的整辆车数。
L2-S2 填 //,满车数是2。
L2-S3 填 %,余下2人。
L2-S4 余下7人,至少3辆。
L2-S5 填 //,12 // 4等于3。公式适用于非负整数人数及正整数座位。
本课公式限定人数为非负整数、座位为正整数。可用人数0至6、每车3座的小表观察,不要求全员推导。第4课再写“有余数就加1”的分支版本。
L2-A1 先输出3 2;改成20后输出4 0。
L2-A2 full = students // seats → 2;left = students % seats → 7;buses = (students + seats - 1) // seats → 3。
L2-B1 只整除:41人得2辆,漏1人;一律加1:40人得3辆,多1辆。均以20座为前提。
L2-B2 103本:满4箱、余3本、需5箱;100本需4箱、余0;101本需5箱、余1。
L2-C1 依次为0、1、1、1、2、2、2;每个已满区间后的第1人会增加一辆。
L2-C2 都不属于范围。座位0会除以0,无法分组;负人数没有本情境意义。公式的课堂适用条件是非负整数人数、正整数座位。
L2-E1 16人:2、0、2;17人:2、1、3。只用//在17人时少算一辆。
错误 把2.35辆当作调度结果。反馈 画20、20、7的分组;问最后7人坐哪里。 验收 输出整辆车数3,并说明容量足够。
错误 只取整除或一律加1。反馈 成对测试40与41;再加入0人。 验收 四组均正确,且能口头说出失败原因。
错误 把公式用于负数或0座位。反馈 重新读输入范围;用分组含义解释限制。 验收 只在非负整数人数、正整数座位下应用。
未达标:用8人/3座画分组,再成对测6人和7人。达标:完成读本装箱迁移,解释为什么箱数与满箱数可能不同。
45分钟教学流程与诊断
让使用者依次输入数量、单价和预算,选择 int 或 float 后进行计算。记录预算余量,解释正数、零与负数分别表示什么。
• 知道 input 返回字符串,数量用 int、金额用 float。
• 能按三行输入的顺序运行三组数据并核对预算余量。
• 能解释负余量是超预算,区分输入、计算、输出。
适用范围 数量为非负整数;单价和预算为非负数,单位为元。每行只输入一个数,小数用英文句点,不带“份”“元”等单位。价格为课堂模拟数据。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 展示3份×4.5元、预算20元;回忆上课只能改代码数据。 | 手算13.5与6.5,提出输入需求。;知道数量、单价、预算是输入。 |
| 5—14分钟 | 完成S1至S4,对照字符串和数值。 | 预测拼接与相加结果,填写转换。;区分input与转换函数的作用。 |
| 14—18分钟 | 完成S5;演示每行一个数的预置输入。 | 按数量、单价、预算排列三行。;消除附单位和顺序颠倒。 |
| 18—31分钟 | 组织M1,要求第三组超预算数据保留。 | 逐组记录预测和实际总价、余量。;三组正确,能解释-4。 |
| 31—40分钟 | 完成A1与A2;有余力选一B题,C题留作课后挑战。 | 先完成A题;有余力者设计预算等于花费的测试。;同时覆盖正、零、负余量。 |
| 40—45分钟 | 独立E1;预告下节根据余量作不同提醒。 | 补转换、计算并解释负号。;以类型转换和结果解释分组补练。 |
输入 input 得到文字 → 转换 int 或 float → 计算 total 与 left → 输出
left = budget - total
left > 0 有余量;left = 0 刚好用完;left < 0 超预算。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
cups = int(input("数量:"))
price = float(input("单价:"))
budget = float(input("预算:"))
total = cups * price
left = budget - total
print("总价", round(total, 2), "元")
print("预算余量", round(left, 2), "元")| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 3 / 4.5 / 20 | total = 13.5;left = 6.5 | 符合范围并与手算一致 |
| 2 / 8 / 20 | total = 16.0;left = 4.0 | 符合范围并与手算一致 |
| 4 / 6 / 20 | total = 24.0;left = -4.0 | 符合范围并与手算一致 |
L3-S1 返回字符串"3"。
L3-S2 填 int,把合法的整数字符串转为整数。
L3-S3 填 float,转换为允许小数的数值。
L3-S4 分别输出34和7;前者拼接,后者先转整数再相加。
L3-S5 得到-4元,说明超预算4元,不是还能花4元。
round(..., 2)仅用于显示近似结果,不承诺补足两位小数,也不是通用财务精确结算方案。无需提前教授异常处理;看到ValueError时先读输入约定。
L3-A1 input接收文字;int把本课合法的整数字符串转整数;float把本课合法的数字文字转为浮点数。
L3-A2 float("2.5")得到2.5;int("2.5")会抛出ValueError,不能直接把这种小数字符串转整数。
L3-B1 输入5、3.5、20;总价17.5元,预算余量2.5元。
L3-B2 开放题示例:2、5、10,余量0;3、5、10,余量-5。须符合输入范围并写出总价及单位。
L3-C1 输出2.52.5,字符串重复两次;改为price = float(input()),输出5.0。
L3-C2 0份时总价0.0、余量20.0;4份×6元、预算20元时余量-4.0,正确表示超预算4元。
L3-E1 cups = int(input());price = float(input());总价15.0元、预算余量-3.0元,表示超预算3元。
错误 认为input已返回数字。反馈 比较"3"+"4"与int("3")+int("4");让学生先说类型。 验收 能解释34与7的来源。
错误 数量写3.5或输入4.5元。反馈 对照约定的输入范围与三行输入顺序。 验收 数量为整数字符串,金额不带单位。
错误 把负余量当程序错或叫找零。反馈 回到left = budget - total,核对4×6与20。 验收 解释为超预算4元;输出名称为预算余量。
未达标:先练int(input())接收3并加1,再练float(input())接收2.5并乘2。达标:自拟刚好用完和超预算两组,逐条解释输入范围。
45分钟教学流程与诊断
把模拟体验票规则写成 if、elif、else 分支:未满12岁15元,12至未满18岁25元,18岁及以上35元。专门检查11、12、17、18岁边界。
• 能将年龄规则写成互不遗漏的三个范围。
• 能用冒号和统一4个空格缩进完成分支。
• 能验证四个边界并解释分支选择;学有余力独立验证20元变式。
适用范围 年龄为非负整数,单位为岁;票价单位为元。所有规则为课堂模拟,不代表任何真实商家。主任务固定15/25/35元,20元变式另存程序单独验证。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 公布模拟主规则,明确非真实商家价格。 | 先为11、12、17、18手写票价。;找出把分界值放错档的学生。 |
| 5—14分钟 | 完成S1至S3,逐条追踪12与18。 | 说出False/True及选择的分支。;解释elif前已排除未满12岁。 |
| 14—19分钟 | 完成S4至S5,演示冒号与4空格。 | 修复一个语法错误和一个边界错误。;区分不能运行与运行结果不符。 |
| 19—31分钟 | 组织M1,保留主任务25元档。 | 四次运行并填分支名称。;四组主规则均正确。 |
| 31—40分钟 | 完成A1与A2;有余力选一B题,C题留作课后挑战。 | 先独立完成A题;选做B1者另存20元变式并核验。;区分两种规则与检测目标。 |
| 40—45分钟 | 独立E1,收集分界值解释。 | 用12与18完整说明两条判断。;离堂错在<=者再测11/12或17/18。 |
0 ≤ age < 12 → 15元
12 ≤ age < 18 → 25元
age ≥ 18 → 35元
if → elif → else 依次判断只选一档
边界 11 12 17 18;冒号与4空格缩进。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
age = int(input("年龄:"))
if age < 12:
price = 15
elif age < 18:
price = 25
else:
price = 35
print("票价", price, "元")| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 11 | price = 15 | if |
| 12 | price = 25 | elif |
| 17 | price = 25 | elif |
| 18 | price = 35 | else |
L4-S1 False;不包括12岁。
L4-S2 填 <。
L4-S3 两次均False,进入else。
L4-S4 补英文冒号 :;分支体下一行缩进,统一4个空格。
L4-S5 从25元错误变成15元;用12岁即可发现边界错误。
if/elif/else从上到下选中一个分支;第二个条件成立前已排除小于12岁。最后print放在分支之外。规则判断是本课主题,不把一条if称为人工智能模型。
L4-A1 依次为15、25、35、35元。0为允许的非负整数边界;主任务没有额外免票规则。
L4-A2 用60分发现错误,应为score >= 60;补测59、60、61。
L4-B1 依次15、20、20、35元;仅改elif中的price。该变式不能使用原15/25/35检测作为成功依据;需按变式结果独立验收。
L4-B2 if left < 0: 输出预算不足;else: 输出预算够用。-4为不足,0与6.5为够用。边界0不属于不足。
L4-C1 if students % seats > 0: 后缩进 buses = buses + 1。车数依次0、2、3、3,与第2课公式一致。
L4-C2 11岁先赋15,第二个if因11<18再次赋25;最后票价25。else只属于紧邻的第二个if,独立if会再次判断,不能替代本规则的elif。
L4-E1 12岁走elif,25元;18岁走else,35元。改为<=后18岁错误进入25元档。
错误 把未满理解成包含分界值。反馈 把12或18直接代入条件,比较<与<=。 验收 11/12/17/18四组均符合主规则。
错误 冒号缺失或分支缩进错误。反馈 从错误行号定位;统一英文冒号与4空格缩进。 验收 print在分支外,每种年龄都输出一次。
错误 20元变式与主检测混用。反馈 另存副本,列出15/20/20/35的独立验收表。 验收 主程序恢复25元;两个版本分别留证据。
错误 连续if误当if/elif。反馈 追踪11岁对price的两次赋值。 验收 能指出else关联的if,说明规则选择顺序。
未达标:在纸上把11、12、17、18归入三个范围,再逐条代入。达标:完成B2预算提醒或C1车数分支,专门核对0这一边界。
45分钟教学流程与诊断
把“高一或高二,并且已预约”的模拟入场规则转为布尔表达式。通过四种组合找出 and 与 or 的区别,并检查括号是否表达原规则。
• 能用 == 判断相等,用 True 或 False 表示条件结果。
• 能写出年级条件与预约条件的组合,验证四组数据。
• 能用一个反例解释 and、or 或括号写错会造成什么。
适用范围 年级只取1、2、3;预约状态直接在代码中写True或False,不加引号。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 读出入场规则,先判断高一未预约。 | 写不能进入并标明未预约。;判断依据是整条规则。 |
| 5—14分钟 | 完成S1至S3,逐项写True/False。 | 比较赋值与相等,列and/or结果。;两个条件各自有结果。 |
| 14—19分钟 | 完成S4、S5,用括号圈年级条件。 | 组合条件后预测False。;预约是必须条件。 |
| 19—32分钟 | 组织M1四组,保持booked布尔类型。 | 输入年级,改预约状态,记录决策。;四组结果和输出一致。 |
| 32—40分钟 | 独立完成A1、A2;有余力选一B题,C题课后。 | 写出两种连接的区别,有余力再找范围反例。;A题正确且能解释未预约。 |
| 40—45分钟 | 独立完成E1;按答案中的关键概念收取证据。 | 独立写含端点范围判断。;8真100假,能说明and。 |
年级条件 (grade == 1 or grade == 2)
允许入场 年级条件 and booked
and 两项都真;or 至少一项真;not 取反。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
grade = int(input("年级1、2或3:"))
booked = True
allowed = (grade == 1 or grade == 2) and booked
if allowed:
print("可以入场")
else:
print("请核对年级和预约")
print("是否预约", booked)| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 1年级 / True | allowed = True | 可以入场;预约True |
| 2年级 / True | allowed = True | 可以入场;预约True |
| 3年级 / True | allowed = False | 请核对年级和预约;预约True |
| 1年级 / False | allowed = False | 请核对年级和预约;预约False |
L5-S1 grade == 1;==作比较,=作赋值。
L5-S2 填and,结果False。
L5-S3 True,两个年级条件中有一个成立。
L5-S4 填or,输出True。
L5-S5 填and,allowed为False;年级符合但未预约。
主任务年级只取1、2、3,booked仅用True/False。网页版还核对决策文案与预约状态;不把布尔False替换为字符串。括号用于明确原规则,短路求值不作全员要求。
L5-A1 依次False、True、True。
L5-A2 allowed = (grade == 1 or grade == 2) and booked;高二未预约时False。
L5-B1 x=100时错误表达式True;改为x >= 5 and x <= 10,结果False。
L5-B2 can_borrow = booked and returned。True/True允许,True/False不允许;其他有效组合也可。
L5-C1 and优先于or,高一未预约仍为True,违反原规则;加回括号后False。
L5-C2 if not booked: print("请先预约");不可混用,非空字符串"False"在条件中为真,而布尔False为假。
L5-E1 5 <= x and x <= 10;8为True,100为False。必须同时满足上下界,or只需一边成立。
错误 把=当比较。反馈 对比grade = 1和grade == 1的用途。 验收 比较使用==。
错误 年级条件外层误用or。反馈 测试高三已预约、高一未预约。 验收 两组都False。
错误 预约写成带引号文字。反馈 让学生观察True/False是布尔值。 验收 保持booked为布尔值,输出与决策一致。
未达标:只练两个布尔条件四种组合,再回到高一未预约。达标:完成器材借用规则,保留一真一假及理由。
45分钟教学流程与诊断
用一个for循环生成连续的校园运动提醒。通过天数1、7、21和0,核对第一天、最后一天、提醒条数以及结束提示的位置。
• 能解释range的起点包含、终点不包含。
• 能生成1至days的连续编号,结束提示只出现一次。
• 能根据缩进判断哪些语句重复执行。
适用范围 天数为非负整数;标准练习采用7天和21天。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 展示7次复制打印,提出更改为21天。 | 预测需要连续21条提醒。;理解重复结构的用途。 |
| 5—14分钟 | 完成S1至S3,画出range取值与缩进。 | 列数并标循环内外。;不含终点。 |
| 14—19分钟 | 完成S4、S5,仅改范围和结束语位置。 | 预测3次与1次。;区分重复输出与结束输出。 |
| 19—32分钟 | 组织M1,21天核对完整序列。 | 记录首尾、条数和结束次数。;1/7/21/0均满足规则。 |
| 32—40分钟 | 独立完成A1、A2;有余力选一B题,C题课后。 | 独立A题,有余力改阅读文案另存。;A题范围与缩进正确。 |
| 40—45分钟 | 独立完成E1;按答案中的关键概念收取证据。 | 写出循环次数和1至5的循环头。;掌握range端点。 |
range(1, days + 1) → 1 到 days
缩进内重复;缩进外只执行一次。
验收 首尾编号 连续性 提醒条数 结束提示。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
days = 7
for day in range(1, days + 1):
print("第", day, "天:完成运动打卡")
print("打卡计划结束")| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 1天 | 提醒条数 = 1;最后编号 = 1;结束次数 = 1 | 连续1至1 |
| 7天 | 提醒条数 = 7;最后编号 = 7;结束次数 = 1 | 连续1至7 |
| 21天 | 提醒条数 = 21;最后编号 = 21;结束次数 = 1 | 连续1至21 |
| 0天 | 提醒条数 = 0;最后编号 = 无;结束次数 = 1 | 无提醒,仅结束提示 |
L6-S1 0、1、2,循环3次,不含3。
L6-S2 4,终点不包含。
L6-S3 1次;它位于循环之外。
L6-S4 填4。
L6-S5 与for对齐,放在循环之外。
range(0)与range(1,1)均为空。只需从示例理解边界,不提前要求迭代器术语。网页主任务核对原运动提醒的全部编号、文案与结束提示,改文案后的阅读变式单独验收。
L6-A1 前者0、1、2、3,共4次;后者1、2、3,共3次。
L6-A2 出现7次;把该行移出循环,与for对齐。
L6-B1 依次输出第1、2、3天阅读提醒,最后一次结束;范围为range(1, 4)。
L6-B2 7天时只出1至6,漏第7天;1天时无提醒。改为range(1, days + 1)。
L6-C1 2、4、6、8、10;每次增加2。
L6-C2 提醒条数等于days;编号连续1至days且无重复;结束语最后只出现一次。0天无提醒但有结束语。
L6-E1 3次;for day in range(1, 6): 或for day in range(1, days + 1):且days = 5。
错误 以为range包含终点。反馈 把范围逐个写出。 验收 1至7用range(1,8)。
错误 结束语放进循环。反馈 用缩进框出重复部分。 验收 7天有7条提醒、1条结束语。
错误 只核对最后一天。反馈 检查完整序列与提醒条数。 验收 无重复、无遗漏。
未达标:先用days = 2逐行跟踪,再试0。达标:完成阅读提醒或隔日编号,用条数和端点双重核验。
45分钟教学流程与诊断
按“第d天阅读d页”的模拟计划累计阅读量。逐轮追踪total,解释初始化与循环更新,再区分累加与累乘的初值。
• 能把累计量total在循环前初始化为0。
• 能解释total = total + day并核对3、7、10、0天。
• 能用逐轮表定位把初始化写进循环的错误。
适用范围 天数为非负整数;第day天读day页是本课模拟规则。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 手算前三天各读1、2、3页。 | 写当天页数与累计6页。;区分两类数值。 |
| 5—14分钟 | 完成S1至S3,说明初值与更新。 | 逐轮填旧值、新值。;等号右边先算。 |
| 14—19分钟 | 完成S4、S5,偶数筛选先纸面预测。 | 补更新行并预测6。;条件内才累加。 |
| 19—32分钟 | 组织M1四组,保留逐轮输出。 | 核对末值与前三轮轨迹。;28/55及0边界正确。 |
| 32—40分钟 | 独立完成A1、A2;有余力选一B题,C题课后。 | 独立A题,选做每日固定页数或偶数页数。;能定位清零错误。 |
| 40—45分钟 | 独立完成E1;按答案中的关键概念收取证据。 | 比较两个初值的累计。;解释初值会影响总量。 |
total = 0 只在循环前做一次
每轮 total = 旧total + day
3天累计 0 → 1 → 3 → 6
累加从0开始;本题累乘从1开始。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
days = 7
total = 0
for day in range(1, days + 1):
total = total + day
print("第", day, "天累计", total, "页")
print("总阅读量", total, "页")| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 3天 | total = 6 | 符合范围并与手算一致 |
| 7天 | total = 28 | 符合范围并与手算一致 |
| 10天 | total = 55 | 符合范围并与手算一致 |
| 0天 | total = 0 | 符合范围并与手算一致 |
L7-S1 0。
L7-S2 3。
L7-S3 0。
L7-S4 total + day;最终6页。
L7-S5 填day,最终2 + 4 = 6页。
第d天读d页是为了观察累计过程的教学规则。主任务网页会核对逐轮day、total及结尾总量;只打印最终答案不足以替代过程解释。乘积是课后迁移,不增加全员课堂负担。 A2是故意清零的错误实验,完成后恢复主任务正确程序再检测。
L7-A1 total依次1、3、6;第1天相同,此后累计包含之前各天。
L7-A2 7;每轮先清零,只保留当天day的页数,漏掉之前累计。
L7-B1 total = total + 2;共10页,原主任务day页规则已改变,单独验收。
L7-B2 相加2、4、6得12;if day % 2 == 0: 下缩进total = total + day。
L7-C1 初值1;product = product * day;结果120。用0会一直得到0。
L7-C2 依次0、1、55页。0天检查空循环与初值;1天检查起点;10天检查持续累计与终点。
L7-E1 更新total = total + day;初值0得6,初值10得16,初值会被保留在累计中。
错误 初值写进循环。反馈 逐轮填旧total和新total。 验收 7天结果28而非7。
错误 把day当作total。反馈 对比第3天阅读3页与累计6页。 验收 区分当天与累计。
错误 累乘也初始化0。反馈 计算前两轮0×1、0×2。 验收 累乘初值1。
未达标:只追踪3天,明确total在循环前初始化一次。达标:另存偶数天累计,保留参与相加的数。
45分钟教学流程与诊断
用模拟义卖结余比较按原本金计息与按当前余额计息。先手算前两年,再用循环检验1年、3年、5年和零利率,说明模型条件。
• 能把2%写成0.02,区分利息与本息。
• 能让复利每轮使用当前余额,核对给定数据。
• 能说明round只用于展示,并写出至少两条模型假设。
适用范围 模拟结余本金为正数,假设年利率为非负数,年数为非负整数;不追加、不取出,复利每年结算一次,不对应真实存款产品。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 读模拟条件,手算第一年。 | 写利息20、本息1020。;区分利息与余额。 |
| 5—14分钟 | 完成S1至S3,追问第二年基数。 | 填0.02并选当前余额。;理解更新后基数。 |
| 14—19分钟 | 完成S4、S5,两轮手算再运行。 | 得到102与104.04。;round仅展示。 |
| 19—32分钟 | 组织M1;5年允许先估计,核对逐年输出。 | 填写1/3/5年与0利率结果。;单利与复利及单位正确。 |
| 32—40分钟 | 独立完成A1、A2;有余力选一B题,C题课后。 | 独立A题,有余力测试本金加倍或0年。;能说明1040.4来源。 |
| 40—45分钟 | 独立完成E1;按答案中的关键概念收取证据。 | 说明数据含义、更新和舍入位置。;解释模型条件与精度。 |
单利 principal + principal × rate × years
复利 balance = balance × (1 + rate)
只在输出时round;先声明固定利率、不追加、不取出。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
principal = 1000
rate = 0.02
years = 3
simple = principal + principal * rate * years
balance = principal
for year in range(1, years + 1):
balance = balance * (1 + rate)
print("第", year, "年余额", round(balance, 2))
print("单利本息", round(simple, 2))
print("复利本息", round(balance, 2))| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 1000元 / 2% / 1年 | simple = 1020;balance显示 1020.00 | 符合范围并与手算一致 |
| 1000元 / 2% / 3年 | simple = 1060;balance显示 1061.21 | 符合范围并与手算一致 |
| 1000元 / 2% / 5年 | simple = 1100;balance显示 1104.08 | 符合范围并与手算一致 |
| 1000元 / 0% / 3年 | simple = 1000;balance = 1000 | 符合范围并与手算一致 |
L8-S1 0.02。
L8-S2 102元,其中利息2元。
L8-S3 按102元计算,利息2.04元。
L8-S4 0.02,更新为102.0。
L8-S5 每年乘1.02,最后显示104.04元。
1000元、2%均为课堂假设。round(...,2)不会强制显示两位小数,1020.0与1020.00数值相同。内部balance保留完整浮点值,验收显示金额时用两位近似,不能把长期模型当作真实收益保证。
L8-A1 利息20元、本息1020元;2% = 2/100 = 0.02,2表示200%。
L8-A2 1040.4元;第2年按1020元算利息20.4元。
L8-B1 单利2120元;复利内部2122.416,显示2122.42元;初始本金加倍后两种本息都加倍。
L8-B2 均1000元;循环不执行,balance仍为principal,检查初始余额。
L8-C1 20、20.4元;先用本年开始余额算利息,再更新balance。若更新后再乘rate,就算成下一年的利息。
L8-C2 结果依赖固定年利率、每年结算、不追加不取出等假设;本课没有验证真实产品、实际利率或学校资金安排。
L8-E1 分别是模拟本金元、教学年利率2%、3年;balance = balance * (1 + rate)。计算保留原精度,round仅用于显示,避免每轮提前舍入改变模型。
错误 把2%写成2。反馈 先手算第一年的20元利息。 验收 rate为0.02。
错误 每轮都按原本金。反馈 比较第2年20与20.4。 验收 更新使用当前balance。
错误 每轮先round再存回。反馈 区分内部计算与屏幕展示。 验收 只在print中round。
未达标:改为100元只追踪两年,分别记录利息和余额。达标:另存打印本年利息的版本,注明打印在更新前。
45分钟教学流程与诊断
为虚构刺桐小铺比较固定比例增长与固定增量。运行20、40、60年,区分金额和倍数,并用模型假设限制结论的适用范围。
• 能解释固定20%下每年新增金额为何变化。
• 能核对20、40、60年结果,分别标明元与倍。
• 能区分固定增量与固定比例,并说明至少两条模型假设。
适用范围 本金为正数,年增长率固定为非负数,年数为非负整数;不追加、不取出,全部增长金额留在模型内。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 展示1000元60年的量级猜测。 | 写估计和一条理由。;允许预测与结果不同。 |
| 5—14分钟 | 完成S1至S3,区分比例、增量与假设。 | 手算前两年并说明模型范围。;不把结果当真实业绩。 |
| 14—19分钟 | 完成S4、S5,以100元3年追踪更新。 | 预测120/144/172.8。;基数每年改变。 |
| 19—32分钟 | 组织M1,分别改years为20/40/60。 | 记录金额、倍数、线性值。;三年数输出与单位正确。 |
| 32—40分钟 | 独立完成A1、A2;有余力选一B题,C题课后。 | 独立A题;有余力改变一项输入。;能比较两个增长规则。 |
| 40—45分钟 | 独立完成E1;按答案中的关键概念收取证据。 | 两行计算先涨后跌并解释。;96且说明基数不同。 |
固定比例 balance = balance × 1.2
固定增量 linear = principal + principal × rate × years
金额 单位元;balance / principal 单位倍。
结论依赖假设。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
principal = 1000
rate = 0.20
years = 60
balance = principal
for year in range(years):
balance = balance * (1 + rate)
print("期末金额", round(balance, 2), "元")
print("约为本金的", round(balance / principal, 2), "倍")
linear = principal + principal * rate * years
print("按初始本金计算固定增量时", linear, "元")| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 1000元 / 20% / 20年 | balance显示 38337.60;linear = 5000;倍数 ≈ 38.34 | 符合范围并与手算一致 |
| 1000元 / 20% / 40年 | balance显示 1469771.57;linear = 9000;倍数 ≈ 1469.77 | 符合范围并与手算一致 |
| 1000元 / 20% / 60年 | balance显示 56347514.35;linear = 13000;倍数 ≈ 56347.51 | 符合范围并与手算一致 |
L9-S1 0.20,增长因子1.20。
L9-S2 24元,年末余额144元。
L9-S3 不能;只是规定假设下的数学结果。
L9-S4 1.2,余额120.0。
L9-S5 填3,最后172.8元。
这是虚构小铺的纯数学实验。主任务保留期末金额、倍数和固定增量三个输出;每一组只改输入。20年显示38337.6等同38337.60。本金为正,才能计算balance/principal。
L9-A1 新增200元、240元;第二年末余额1440元。
L9-A2 前者金额元,后者约为本金的倍数;固定增量模型为1000+200×60=13000元。
L9-B1 期末约76675.20元,固定增量模型10000元;均为1000元初始时的2倍,倍数约38.34不变。
L9-B2 期末约6727.50元,固定增量3000元;保留固定比例、不追加不取出,结果低于20%模型的38337.60元。
L9-C1 第1年增加200元;第60年约9391252.39元。因计算基数变大,比例相同而金额不同。
L9-C2 不取出或每年固定非负增长的假设失效;需逐年取款金额、逐年增长率等数据,并明确发生顺序。
L9-E1 balance = 100 * 1.2;balance = balance * 0.8;结果96.0元。两次百分比使用不同基数,减少的是120的20%。
错误 把比例当固定金额。反馈 列出200、240的来源。 验收 更新按当前余额。
错误 把倍数当金额。反馈 在数值后强制补单位。 验收 金额元、比值倍。
错误 把模型结果当现实保证。反馈 逐条圈出固定比例与无取款。 验收 结论明确限于假设。
未达标:仅计算100元前两年,分列旧余额、本年增量、新余额。达标:改变一个参数后记录变化,并写清保留哪些假设。
45分钟教学流程与诊断
当增长次数未知时,用while反复检查是否达标。用“上一次未达标、这一次已达标”证明首次达标,特别核对起始已达标时的0次。
• 能说出while先检查条件、条件为真才进入循环。
• 能同步更新余额和年数,验证13年、0年与1年边界。
• 能用前后两次余额解释“首次”,指出循环需要终止条件。
适用范围 模拟基金本金和目标为正数;未达标时假设年增长率必须大于0,初始已达标计0年;不对应真实学校基金收益。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 提出只知道目标、不知道年数的问题。 | 预测可能用重复判断。;区分已知次数与未知次数。 |
| 5—14分钟 | 完成S1至S3,手算每周50的例子。 | 标条件、金额更新、计数更新。;两种更新各有作用。 |
| 14—19分钟 | 完成S4、S5,加入起始等于目标。 | 写3次与0次。;先判断后执行。 |
| 19—32分钟 | 组织M1四组;核对第12与13年。 | 记录年数、余额及首次证据。;13/0/0/1边界正确。 |
| 32—40分钟 | 独立完成A1、A2;有余力选一B题,C题课后。 | 独立A题;有余力做固定每周存入。;能说明每一行作用。 |
| 40—45分钟 | 独立完成E1;按答案中的关键概念收取证据。 | 独立追踪n的0→1→2→3。;说明条件变False。 |
初值 → 判断balance < target → 更新balance和years → 再判断
首次 前一次 < target ≤ 当前一次
起始已达标 0次;循环必须有结束的可能。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
balance = 1000
target = 10000
rate = 0.20
years = 0
while balance < target:
balance = balance * (1 + rate)
years = years + 1
print("首次达标需要", years, "年")
print("达标余额", round(balance, 2), "元")| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 1000 → 10000 | years = 13;balance显示 10699.32 | 符合范围并与手算一致 |
| 10000 → 10000 | years = 0;balance = 10000 | 符合范围并与手算一致 |
| 12000 → 10000 | years = 0;balance = 12000 | 符合范围并与手算一致 |
| 1000 → 1200 | years = 1;balance = 1200 | 符合范围并与手算一致 |
L10-S1 True。
L10-S2 0。
L10-S3 必须更新saved,例如saved = saved + 50;只更新weeks不改变条件。
L10-S4 填1,需要3周。
L10-S5 <;起始条件False,0次。
主任务为固定20%增长的课堂假设,不代表真实研学基金收益。余额未达目标时须为正增长;非增长数据只用于纸面风险分析或带上限的变式。不要实际运行无保护的无限循环。
L10-A1 正确为0;<=会多执行一次,得到1年且余额继续增长。
L10-A2 前者改变余额使条件有机会变False;后者记录执行次数。缺少任一个都会使结果或终止性出问题。
L10-B1 12周;while saved < 600:中每轮saved加50、weeks加1。
L10-B2 第12周600元未达标,第13周650元达到目标,首次13周。
L10-C1 余额不变,原条件一直True;可用while balance < target and years < 100:,结束后仍需判断是否达标,不能把100轮称达标。
L10-C2 8916.10 < 10000 <= 10699.32;正的固定增长率使余额逐年增加,因此更早年份也未达标。所有数值仍为教学模型。
L10-E1 循环3次,n为3;每轮n加1,最终n < 3变False。
错误 把<=当未达标。反馈 测试起始等于目标。 验收 0年结束。
错误 忘记更新条件相关变量。反馈 纸面执行两轮观察余额。 验收 余额改变,计数也增加。
错误 把上限轮数当达标年数。反馈 循环后再次检查balance >= target。 验收 未达标需明确说明。
未达标:在纸上追踪saved为0、50、100、150四个状态。达标:实现最多100轮的保护,并区分“停止”与“已经达标”。
45分钟教学流程与诊断
把古厝台阶问题按最后一步分成走1级或2级两类。用previous与current保存相邻结果,逐轮更新,并解释0级的空走法约定。
• 能把走法按最后一步分成不重不漏的两类。
• 能用临时变量更新相邻结果,验证小规模与10级。
• 能区分顺序不同的走法,并解释0级计1种。
适用范围 阶数为非负整数,标准练习从1级开始;0级约定有1种不走的空走法。每次只走1或2级,不同顺序算不同走法。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 枚举2级与3级走法。 | 用1与2记录步骤顺序。;识别1+2与2+1不同。 |
| 5—14分钟 | 完成S1至S3,按最后一步分类。 | 画两类来源。;分类不重不漏。 |
| 14—19分钟 | 完成S4、S5,追踪两个变量。 | 记录更新前后值。;临时变量保留结果。 |
| 19—32分钟 | 组织M1五组;0级先讲约定。 | 核对0/1/2/5/10,保留轨迹。;初值、边界和较大值正确。 |
| 32—40分钟 | 独立完成A1、A2;有余力选一B题,C题课后。 | 独立A题;有余力做6级或20级。;理解递推来源与变量更新。 |
| 40—45分钟 | 独立完成E1;按答案中的关键概念收取证据。 | 解释6级13种的两类来源。;不仅给数值,还说明不重复。 |
F(0)=1 F(1)=1
F(n)=F(n-1)+F(n-2)
先 next_count = previous + current
再 previous = current;current = next_count。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
n = 5
previous = 1
current = 1
for step in range(2, n + 1):
next_count = previous + current
previous = current
current = next_count
print("走法数", current)| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 0级 | current = 1 | 符合范围并与手算一致 |
| 1级 | current = 1 | 符合范围并与手算一致 |
| 2级 | current = 2 | 符合范围并与手算一致 |
| 5级 | current = 8 | 符合范围并与手算一致 |
| 10级 | current = 89 | 符合范围并与手算一致 |
L11-S1 2种:1+1、2。
L11-S2 不同,先后顺序不同。
L11-S3 最后走2级来自1级,最后走1级来自2级,两类合计3。
L11-S4 current,算出2级的2种。
L11-S5 next_count,4级为5种。
本课统计有序步长序列,并非在真实古厝中实践跨级行走。0级计1种空序列使初值一致;n为非负整数。网页另测20级10946,课内优先小规模解释,较大样例可课后补齐。
L11-A1 1+1+1、1+2、2+1共3种;每一步先后不同视为不同走法。
L11-A2 第一轮previous=1、current=2;第二轮previous=2、current=3。
L11-B1 6级13种;最后1级来自5级8种,最后2级来自4级5种。
L11-B2 20级10946种、10级89种;10946不是178,级数翻倍不意味着走法翻倍。
L11-C1 丢失旧previous;结果变为不断翻倍,2级2、3级4,正确3级应3。
L11-C2 0级1、1级1、2级2、3级4;4级为4+2+1=7,要保留前三个结果。初值与递推均需改变。
L11-E1 13种。最后走1级的8种与最后走2级的5种互不重叠,且覆盖所有合法最后一步。
错误 不区分1+2与2+1。反馈 画每步先后路径。 验收 列出3级的3种。
错误 更新顺序丢失旧值。反馈 先保存next_count再移动两个变量。 验收 3级3、4级5。
错误 把0级写成0种。反馈 约定不走任何一步为1种空走法。 验收 与1级和2级初值一致。
未达标:枚举3级并用两色圈出最后一步;仅追踪到4级。达标:完成20级比较或1/2/3步长的纸面递推。
45分钟教学流程与诊断
在三柱汉诺塔规则下,用小盘数合法移动验证最少步数,再用递推统计更多盘的步数。明确“算出步数”与“给出合法移动过程”是两项证据。
• 能遵守一次只移顶盘、大盘不得压小盘的规则。
• 能解释两次搬动小塔加一次大盘的递推关系。
• 能用递推与公式核对步数,并区别计步与移动方案。
适用范围 盘数为非负整数,实物练习采用1至4盘;三根柱子,每次只能移动最上面的一个盘,大盘不能压小盘。
| 时间 | 教师组织与问题 | 学生任务与证据 |
|---|---|---|
| 0—5分钟 | 演示规则,让学生完成1或2盘。 | 记录每步起终柱。;一次一顶盘,大不压小。 |
| 5—14分钟 | 完成S1至S3,分解2盘与3盘。 | 解释两个小塔子任务。;计步不等于移动方案。 |
| 14—19分钟 | 完成S4、S5,写1/3/7。 | 追踪steps更新。;理解2与1的意义。 |
| 19—32分钟 | 组织M1计步核对;每人完成3盘合法移动并导出或记录动作,4盘计步可课后。 | 亲手完成3盘,记录实际步数并与7步对照。;3盘合法完成;超过7步者说明可改进处。 |
| 32—40分钟 | 独立完成A1、A2;有余力选一B题,C题课后。 | 独立A题;有余力复核3盘最优方案,10/64盘课后。;全员已保留3盘实操证据;A题解释递推。 |
| 40—45分钟 | 独立完成E1;按答案中的关键概念收取证据。 | 计算5盘并说明移动验收标准。;31且区分两类证据。 |
T(0)=0
T(n)=2 × T(n-1)+1
移开小塔 → 移最大盘 → 小塔移到目标
计步核对 2 ** n - 1;移动过程另验。以下代码对应主任务规则。学生应解释结果,再使用参考代码核对;不把复制代码本身当作达标证据。
n = 4
steps = 0
for disk in range(1, n + 1):
steps = 2 * steps + 1
print(disk, "个盘最少", steps, "步")
print("公式核对", 2 ** n - 1)| 数据 | 预期结果或展示值 | 判断说明 |
|---|---|---|
| 0盘 | steps = 0 | 符合范围并与手算一致 |
| 1盘 | steps = 1 | 符合范围并与手算一致 |
| 2盘 | steps = 3 | 符合范围并与手算一致 |
| 3盘 | steps = 7 | 符合范围并与手算一致 |
| 4盘 | steps = 15 | 符合范围并与手算一致 |
L12-S1 小盘放大盘上合法;不能大压小,也不能抽底盘。
L12-S2 1,表示最大盘移动一次。
L12-S3 没有;它只统计最少步数,合法移动需要另一份过程证据。
L12-S4 填1,得到3。
L12-S5 2 * steps + 1,依次1、3、7。
统计程序不生成移动序列,必须亲手完成3盘合法移动,2盘为支架,4盘可选。0盘0步;Python整数可精确保存64盘步数。按秒换年是粗略时间假设;64盘只计算数量,不展开全部移动。
L12-A1 1、3、7步。2盘A到C:盘1 A→B,盘2 A→C,盘1 B→C。
L12-A2 2表示先把小塔移开、再移回目标,共两次同规模子任务;1是最大盘移动。最大盘上有小盘时不能抽取。
L12-B1 盘1 A→C;盘2 A→B;盘1 C→B;盘3 A→C;盘1 B→A;盘2 B→C;盘1 A→C,共7步且每步合法。
L12-B2 均1023步;**是乘方,2 ** 10表示2的10次方。
L12-C1 18446744073709551615步;约584942417355年,即5849.42亿年。按每秒一步、365天一年估计,仅计数,不实际生成序列。
L12-C2 台阶用前两级F(n-1)+F(n-2),来自最后一步两类;汉诺塔用2T(n-1)+1,来自两次搬小塔和一次移最大盘。
L12-E1 2×15+1=31步;具体方案仍须逐步核对顶盘、一盘一移、大不压小及最终到目标柱。
错误 用盘数作线性增长。反馈 列1、3、7、15看递推。 验收 5盘31。
错误 只给步数便称完成移动。反馈 要求小规模记录起终柱。 验收 2盘3步或3盘7步合法。
错误 64盘转float丢整数精度。反馈 保留Python整数计算steps。 验收 完整整数18446744073709551615。
未达标:用2盘记录三步,再把3盘任务画成“搬2盘、移大盘、搬2盘”。达标:完成3盘7步或4盘15步的合法序列验收。
题号 L4-B1。保留主任务程序后,复制另存一个变式。这里只将12至未满18岁档从25元改成20元,其他档位与分界保持原规则。
age = int(input("年龄:"))
if age < 12:
price = 15
elif age < 18:
price = 20
else:
price = 35
print("票价", price, "元")| 输入年龄 岁 | 主任务票价 元 | 20元变式票价 元 | 变式分支 |
|---|---|---|---|
| 11 | 15 | 15 | if |
| 12 | 25 | 20 | elif |
| 17 | 25 | 20 | elif |
| 18 | 35 | 35 | else |
验收方式 先以变式表四组预期结果运行新程序,再回到主任务确认25元档保留。原课程15/25/35元检测会判定20元变式的12、17岁不匹配,这是规则不同造成的结果;不可据此把变式误判为程序错误。
L4-B2 预算余量提醒。把下列分支放在第3课计算left之后;left为-4输出不足,0和6.5输出够用。
if left < 0:
print("预算不足")
else:
print("预算够用")L4-C1 研学车数的分支算法。输入范围沿用第2课;0、40、41、47人且每车20座时,结果为0、2、3、3。
buses = students // seats
if students % seats > 0:
buses = buses + 1
print("需要大巴", buses, "辆")学生____________ 课次____________ 主样例通过____组/____组
计算与运行____/2 测试证据____/2 解释与修改____/2 独立迁移____/2
下一次补练的具体任务________________________________________________