枚举值是什么意思_《Python算法入门——用枚举算法寻找问题的多个解》教学设计... - Go语言中文社区

枚举值是什么意思_《Python算法入门——用枚举算法寻找问题的多个解》教学设计...


教学重点:

枚举算法,生活中问题多个解的推理过程与编程算法之间认识观念的过渡

教学难点:

生活中问题多个解的推理过程与编程算法之间认识观念的过渡

解决方法:

1.游戏情景导入新概念。2.枚举类似的事例解释概念。3. 用相同事例加深理解。

课前准备:

给学生机发送Python-3.4.4.msi,让学生完成安装。

学习要求:

完成“明7暗7姓名“程序得50分,选做并完成”明8暗8姓名“程序额外加20分。

完成”密码18姓名“程序得50分,选做并完成”密码26姓名“程序额外加20分。

以上作业以程序输出正确结果并上交到教师服务器为准,教师将根据收到的作业评分。

教学课时:

1课时

教学过程:

一、情景导入:5分钟

同学们好!我现在开始上课。我们先做一个游戏。请大家看前面的大屏幕:

PPT展示游戏规则是:从A1开始逐个1,2,3报数,每当遇到7或7的倍数同学不出声站起来然后坐下,记下自己的数字。下一个同学继续报8,A7结束后B7接上,循环报数直到结束。

逢7或7的倍数出声没起立的同学站一会直到游戏结束,报错数的同学站一会直到游戏结束。

我们要统计报7的同学和7的倍数的同学。

要求:报数的同学要大声,其余同学请保持安静。

报7的同学我们称为“明7”,7的倍数的同学我们称为“暗7”。我们通过游戏选出了“明7” 和“暗7”,一共有9个。如果我们编程序来筛选“明7” 和“暗7”,应该怎样做呢?这就是我们今天要探究的知识:枚举算法。

PPT展示课题:Python算法入门——用枚举算法寻找问题的多个解

Python算法入门是一个非常挑战性的话题,很多人一听到算法就头大,看到枚举算法更是头疼,感到很难!但今天我将用巧妙的方法给大学解释枚举算法。我们今天的课程同学们要完成至少两个程序的编写,完成两个程序的编写的同学将得到100分,完成额外两个程序的同学将得到额外40分。我想看看有多少同学完成或超额完成今天的学习任务。同学们有没有信心?

那么我们就先来看看枚举算法的定义!

二、枚举算法的概念:3分钟

PPT展示:把问题的所有可能的“解”都一一列举出来,并按照要求的条件逐个判断每个答案是否是正确的解。这就是枚举算法。

如我们刚才找“明7” 和“暗7”,我们采用的方法是请每个同学把每一个数都报了一遍,最后选出了“明7” 和“暗7”,这个一一列出的过程就是枚举,采用这样的方法就是枚举算法。

PPT展示:再如:我们做选择题:你将四个选项逐个放到题干中测试是否是正确答案,这个过程就是枚举,这种方法就是枚举算法。

那么枚举算法如何编程呢?

三、枚举算法的编程:PPT展示

1. 要判断“明7” 和“暗7”,如何写语句呢?请同学们看大屏幕,请同学们思考:

“明7”就是要在数中看到______?“暗7”就是要求数能被______整除?即余数为0。

PPT展示:请学生讨论1分钟。

如何表示“明7”的语句表示法是我们这节课要学习的内容,请同学们记住:

‘7’ in str(i) 即字符“7”在 i 所代表的数字字符里。 PPT展示

下面请同学们思考:“明8”如何用Python语言表示?我们改动什么地方?

PPT展示:“明8”:‘8’ in str(i)即字符“8”在 i 所代表的数字字符里。

如何表示“暗7”的语句表示法也是我们这节课要学习的内容,请同学们记住:

i%7==0 即在i 所代表的数字用7取余后,余数为0,当余数为0时, i所代表的数就是7的倍数。

下面请同学们思考:“暗8”如何用Python语言表示?我们改动什么地方?

PPT展示:“暗8”: i%8==0

在这里,

% 是取余运算符,结果输出余数。22%7的运算结果是:1 即:22除以7的余数

22%10的运算结果是: 2

18%10的运算结果是: 8 PPT展示:

%的输入方法:英语状态按下大写键Shift,再按5,就输入了%。 3分钟

我们用下面的语句完成程序的编写, PPT展示程序,老师演示6分钟

for i in range(1,41): 41指我们现有40个人,range()函数的范围小于第2个结束数的值。

If ‘7’ in str(i) or i%7==0: or的意思是或者; or前后两个条件具备1个即可。

print(i)

下面老师给你们演示程序的录入、保存和执行。还有程序的另存为、改名和执行。

请同学们录入上面的程序,然后按F5执行程序,将程序以 “明7暗7+姓名” 为文件名保存在桌面上,可得结果是:4个明7,4个暗7。 学生练习5分钟

启动IDLE的过程:

开始→所有程序→Python3.4文件夹→IDLE→File→New File→输入程序→按F5→执行程序→先保存程序→输入文件名:“明7暗7自己的姓名” →保存位置先桌面→单击“保存”→可看到输出结果。

提示:

程序必须用英文输入法录入。

正确完成本项练习后不要关闭你们编写的程序窗口!可以关闭程序执行的窗口。

学有余力的同学完成本项作业后可做额外的练习,老师将根据你们上交的作业额外给你们加分。选做练习请你们另打开你们计算机桌面上的《Python算法入门用枚举算法寻找问题的多个解选做练习》查看具体要求。现在老师给你们作示范。

选做练习。请将100以内含有明8和暗8的数找出来。方法是将“明7暗7+姓名”程序另存为“明8暗8+姓名”,保存在桌面上,然后修改程序内容,再执行。

你将怎样修改程序?

老师查看学生机器上程序的执行情况,总结学生完成情况。

2.我们再来看内容变化稍微大一点的问题:有个同学密码锁的三位数密码忘了,他只记得个位数是8,其他位含有1但不知道在哪一位置。参考上面的实例,你能编写程序枚举出可能的密码呢? PPT展示问题。

讨论一:

上面的实例是在1到40之间找明7暗7,range()函数中括号内的起始和终止数字分别是range(1,41)。现在是三位数密码,我想问大家:

最小的三位数是什么? 100

最大的三位数是什么? 999

请你们讨论一下:range()函数中的起始数和结束数应该如何设定?

range(100,999)

由于range()函数的终止数本身不执行,我们应该将数据范围设为:

range(100,999+1) 或者直接就设为:range(100,1000)

讨论二:百位和十位有1应如何处理?即如何表示“1”在百位和十位?或者说:我们要把三位数字变为两位数字,那么如何把三位数字变为两位数字呢?

如123如何让它只留下 12,请你们想想:有什么方法?谁知道?

那我告诉你们:每个编程语言都有很多方法实现上述要求,我今天告诉你们最简单的:

把这个三位数除以10后,只保留整数。

Python有一个运算符专门做这样事情:“//”表示整除。

如 123//10 就得到了12 非常方便。

再如216//10 就得到了21

如果用字母代替数字,我们可以用 i//10 来表示。

8c991691bb4743805c02d2cee35cd5f8.png

图1用10对列表中的数整除

讨论三:i%7==0 是取7的倍数,即余数应为0,现在最后一位数为8,即余数要求为8,如何表示?

显然 ==后面应改为:8

一个三位数,要把它的个位数都能用取余运行符取出来,应该用什么数来取余数? 10

如101,102,103,104,105,106,107,108,109,110,我们用一个数来取余,能把上述三位数字中的个位数都能余下,需要用什么数来取余数?

f180d437dfd7810c765ab1f780e3ff87.png

图2用10对列表中的数取余

i%10==8 6分钟

请你们将“明7暗7+姓名”程序或“明8暗8+姓名”,程序另存为“密码18+姓名”,然后按上面的讨论结果修改程序,按F5保存后执行程序,看看程序为我们枚举了多少个可能的解?

教师示范:

for i in range(100,1000):

if ‘1’ in str(i//10) and i%10==8:

print (i)

将上述程序输入计算机,试着保存为“密码18+姓名”,运行下看看枚举的结果 2分钟

如果密码锁的三位数密码个位数是6,其他位有个2,我们如何修改程序。请你们改改试一下。

for i in range(100,1000):

if ‘2’ in str(i//10) and i%10==6:

print (i) 2分钟

将上述程序输入计算机,试着保存为“密码26+姓名”,运行下看看枚举的结果

四、小结: 2分钟

1.我们今天探究了枚举算法,枚举算法就是将可能的答案一一列举出来,然后用条件语句判断出正确的答案。正确的答案可能不止一个!

2.在探究枚举算法的时候,我们还用到了’7’ in str(i) ,str()是将数字格式转换为字符格式。

or 是或,意思是前后两个条件有一个为真就可以。

and是与,意思是前后两个条件必须同时为真。

i%7==0: %是取余运算符, ==是逻辑运算符,=是赋值运算符。

逻辑运算符判断是否相等。赋值运算符是将后面的值赋给前面。

a=10 a=a+10

i//10://是整除运算符。 /除法运算符,/后的结果可能有小数。这些你们课下都可以试试。

五、上传作业:

请将你们编写的四个程序上传到老师的服务器。请注意需要添加4个文件。

2分钟

六、课后作业:

现有足量的1克、2克、5克、10克砝码,现在要求称100克食盐,共允许取用40枚砝码,要求每种砝码至少使用1枚,共有多少种称量方案?

请编写程序枚举可能的方案。 你们班级的QQ群里有我上传的书,里面第56页有编写好的程序。

我这儿有改进后的程序供你们参考。你们将这两个程序输入计算机后分别执行一下试试,看看有什么区别?

7868db85929f8590d6e33bd825ec4df1.png

图3砝码称量方法改进

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39949954/article/details/111369573
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2023-01-02 21:43:07
  • 阅读 ( 296 )
  • 分类:算法

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢