第11课 枚举算法——一个都不放过 教学设计+html素材 小学信息科技Python程序设计

资源下载
  1. 二一教育资源

第11课 枚举算法——一个都不放过 教学设计+html素材 小学信息科技Python程序设计

资源简介

/ 让教学更有效 精品试卷 | 信息
小学四—五年级 Python 程序设计(第一学期)
教 学 设 计
第11课 枚举算法——一个都不放过
课  题 第11课 枚举算法——一个都不放过
课  时 第 11 课时(40 分钟)
课  型 算法新授 + 竞赛衔接
教学环境 机房(Windows + Python 3.x + IDLE/Thonny)
授课班级 四年级、五年级
一、学情分析
学生已能熟练使用 for 循环与 if 判断,也见过递归。本课要介绍的枚举(穷举)是所有算法里最朴素、也最容易上手的一种:把所有可能的情况一个一个试过去。它不聪明,但可靠,是竞赛中拿分的利器。
学生的主要困惑是:
1.「枚举」听起来高深,其实他们早就在用,只是不知道这个名字;
2.不会确定枚举范围——范围太小漏解,范围太大浪费时间;
3.遇到两个或多个未知量时,不知道可以套多层循环。
本课用「找钥匙」「猜密码」的情境切入,让学生体会「笨办法」的价值,再学两个经典题:水仙花数与百钱百鸡。
二、教学目标
(一)知识目标
1.理解枚举算法的思想:按照确定的顺序,不重不漏地尝试所有可能情况。
2.掌握枚举范围的确定方法,能根据题意写出循环的起止值。
3.掌握双重、三重循环枚举的写法,会用 if 筛选符合条件的解。
(二)能力目标
1.能独立写出水仙花数、百钱百鸡等经典枚举程序。
2.能判断枚举范围是否合理,并初步体会优化(缩小范围)的意义。
(三)素养目标
1.体会「把无序的猜想变成有序的排查」这一算法价值。
2.培养逐项验证、不遗漏的严谨态度,以及尝试优化的意识。
三、教学重点与难点
项 目 内 容
教学重点 枚举思想的建立;循环范围(起止值)的确定;多重循环枚举与条件筛选。
教学难点 如何确定枚举范围;百钱百鸡中三层循环的变量含义与边界;如何通过缩小范围优化枚举次数。
四、教学准备
· 教师:课件、100 把钥匙的比喻图、枚举次数对比表。
· 学生:练习卷、上机账号。
· 素材:本课 5 个程序文件 1水仙花数.py ~ 5优化枚举.py。
五、教学过程(共 40 分钟)
环节一 情境导入:找钥匙(5 分钟)
提问:「你有 100 把钥匙,只有一把能开这把锁,你会怎么找?」
学生答:「一把一把试」——追问:「有更好的办法吗?」
答不上来——这就对了。当没有任何线索时,逐把试过(枚举)就是唯一可靠的办法:它笨,但保证能找到。
再举数数找密码的例子:三位密码锁,从 000 到 999 挨个试,虽然慢,但绝不遗漏。
引出定义:把所有可能的情况按顺序一个一个检查,符合条件的就留下,这就是枚举(也叫穷举)。
【设计意图】让学生先接受「笨办法也有价值」,放下对「必须用巧法」的执念,才能扎实地把枚举写对。
环节二 新授:单层枚举——水仙花数(12 分钟)
提问:「什么样的三位数叫水仙花数?」——各位数字的立方和,恰好等于它自己。例如 153 = 1 + 5 + 3 = 1 + 125 + 27 = 153。
演示 1水仙花数.py。
for n in range(100, 1000): # 三位数:100~999
a = n // 100 # 百位
b = n // 10 % 10 # 十位
c = n % 10 # 个位
if a ** 3 + b ** 3 + c ** 3 == n:/n print(n)
关键提问一:为什么 range 写 (100, 1000) 而不是 (1, 1000)?→ 水仙花数只可能出现在三位数里,把范围缩到三位数,可以少试 99 次无用的情况。这就是确定枚举范围的意义:不多不少,刚好覆盖。
关键提问二:怎么把 153 拆成 1、5、3?→ 又是整除与取余:// 100 拿百位,// 10 % 10 拿十位,% 10 拿个位。第 1 课打下的基础在这里再次发挥作用。
手动验证 153 与 370:
n a(百位) b(十位) c(个位) a +b +c 是否为水仙花数
153 1 5 3 1+125+27=153 是
123 1 2 3 1+8+27=36 否
370 3 7 0 27+343+0=370 是
说明:三位数的水仙花数一共有 4 个:153、370、371、407。让程序自己找出来,比人一个个算快得多。
环节三 新授:多重枚举——百钱百鸡(13 分钟)
出题(古代数学名题):公鸡 5 元一只,母鸡 3 元一只,小鸡 3 只 1 元。用 100 元买 100 只鸡,公鸡、母鸡、小鸡各几只?
提问:「这里有三个未知数,用一层循环够吗?」→ 不够,需要三层循环,每一层负责一个未知数。
演示 2百钱百鸡.py。
for x in range(0, 21): # 公鸡:最多 100//5 = 20 只
for y in range(0, 34): # 母鸡:最多 100//3 = 33 只
z = 100 - x - y # 小鸡:由总数直接算出来,不必再循环
if z >= 0 and z % 3 == 0 and 5 * x + 3 * y + z // 3 == 100:
print(f"公鸡{x}只,母鸡{y}只,小鸡{z}只")
逐层讲解变量含义:
变 量 代表的量 枚 举 范 围 为什么是这个范围
x 公鸡只数 0 ~ 20 每只 5 元,100 元最多买 20 只
y 母鸡只数 0 ~ 33 每只 3 元,100 元最多买 33 只
z 小鸡只数 由 100-x-y 算出 总数固定 100 只,不必再循环
强调两个精妙之处:
(1)第三个数不用循环,直接用 100 - x - y 算出来——少了一层循环,程序快了几十倍。这就是优化意识。
(2)条件里 z % 3 == 0 是因为小鸡 3 只 1 元,必须整只买,所以小鸡数要能被 3 整除。
让学生思考:为什么公鸡范围是 0~20 而不是 0~100?如果写成 range(0, 101) 程序结果会错吗?→ 结果不会错,但会白白多试很多次。范围收紧是「更快」,不是「更对」。
环节四 拓展:枚举的优化(5 分钟)
演示 5优化枚举.py,用 sum() 把枚举次数统计出来,对比两种范围的差异。
def count(a, b):
cnt = 0
for x in range(a):
for y in range(b):
cnt += 1
return cnt
print("范围 21×34 :", count(21, 34), "次")
print("范围 101×101:", count(101, 101), "次")
结论:同样的题目,范围收紧后枚举次数从 10201 次降到 714 次,差了十几倍。
追问:「那么在考试时,如果枚举太慢、时间不够,第一个该想什么?」→ 想想范围能不能缩小、能不能用已知条件把某个未知数直接算出来。
【设计意图】不要求小学生做复杂的时间复杂度分析,但要在他们心里种下一颗种子:枚举不是死板地全试一遍,聪明的枚举懂得少试无用的情况。
环节五 总结与作业(5 分钟)
演示 3完数.py、4求质数.py 作为补充例子,鼓励学生自读。
# 完数:所有真因子之和等于自己,如 6 = 1+2+3
for n in range(2, 1001):
s = 0
for i in range(1, n):
if n % i == 0:
s += i
if s == n:/n print(n)
本课一句话总结:枚举就是「按顺序把所有可能都试一遍」;写好枚举的关键有两条——范围要定准(不多不少),条件要写全(漏一条就漏解)。
六、板书设计
第11课 枚举算法
枚举 = 把所有可能按顺序试一遍
两件事:① 定范围 ② 写条件
水仙花数
for n in range(100, 1000):
a = n // 100
b = n // 10 % 10
c = n % 10
if a**3 + b**3 + c**3 == n:/n print(n)
百钱百鸡:公鸡 0~20,母鸡 0~33
小鸡 = 100 - x - y(不必循环)
范围收紧 → 枚举次数大幅减少
七、分层作业
★ 完成练习卷第一、二、三题(填空、判断、手算模拟)。
★★ 完成练习卷第四题:输出 100~999 中所有的水仙花数;求 1~1000 中的完数。
★★★ 完成练习卷第五题:用枚举法解题——鸡兔同笼,头共 35 个、脚共 94 只,求鸡兔各几只;并统计程序一共枚举了多少次,写出你的优化思路。
八、教学反思要点
1.「枚举」这个名词是否让学生觉得陌生?用「找钥匙」引入的效果如何?
2.百钱百鸡中「第三个数不用循环」这一点,有多少学生真正理解了?
3.引导学生确定枚举范围时,是否需要再补一个「范围定错会怎样」的反例?
4.本课内容量偏大,水仙花数与百钱百鸡是否要拆到两课时?
课后记(教师填写):
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)

展开更多......

收起↑

资源预览