内容正文:
nullnullnull
第六单元 快速遍历数据
鸡兔同笼
鸡兔同笼
巧计算
巧计算
Contents
目
录
01
朱迪的推理:数学算式法
02
闪电的监控:枚举法遍历
03
超级计算机:编程验证法
04
全城大挑战:韩信点士兵
🎬 欢迎来到《疯狂动物城2》的世界
“朱迪!尼克!动物公寓电梯报警超重,但动物们都说没超重!
光知道头和脚,怎么算啊?
“是…鸡和…兔子…让…我…看看…哦,…数了…有35个头…94只脚…”
里面住了多少动物?都是什么动物?
“别急!这是经典的‘鸡兔同笼’问题,交给我们吧!”
欢迎同学们来到《疯狂动物城2》的世界,
但是今天疯狂动物城出事了!动物公寓的电梯超重报警,可是里面的动物们都说自己没超重。这可难住了牛局长。
朱迪问到:里面住了多少动物,都是什么动物?
细心的闪电管理员记录下了关键信息:里面住的是鸡和兔子,数了一下电梯里一共有35个头,94只脚。
这是尼克就提出的关键性的问题:光知道头和脚,怎么知道里面住了多少只鸡、多少只兔子?
聪明的朱迪警官立刻认出,这是一个经典的“鸡兔同笼”问题。
过渡:同学们,让我们一起帮助朱迪和尼克解开这个谜题吧!
朱迪的推理
Part-01
Part-01
数学算式法
朱迪的推理-数学算式法
我的推理就是:先假设6只全部都是兔子。
问题计算
每只兔子有四只脚,6只兔子一共多少只脚?
为了便于理解,先把原问题的数量减少为:动物公寓住有鸡和兔子,从上数有6个头, 从下面数有18只脚
4 x 6 = 24
解题思路
假设全是兔子,总腿数应为______________只。实际只有___只,多算了__只。说明_________________,所以________________________________________。
4 × 6 = 24
18
6
每只鸡被多算2只脚
鸡的数量 = 多算的脚数 ÷ 每只多算的脚数
鸡的数量:(4 x 6 -18) ÷2 = 3(只)
兔子的数量:6-3 = 3(只)
为了便于理解,先把原问题的数量减少为:动物公寓住有鸡和兔子,从上数有6个头, 从下面数有18只脚
首先,朱迪的推理就是:先假设6只全部都是兔子。
每只兔子有四只脚,6只兔子一共多少只脚?(邀请学生回答)
一共有4 x 6 = 24 只脚
但问题是,如果全部都是兔子的话,总脚数应该是4 x 6 = 24,但是我们这里数得只有几只?(18只),说明多算了几只脚?(6只)
这多出来的脚是怎么回事呢?(邀请学生回答)
原来是因为我们把鸡当成了兔子,每只鸡多算了2只脚。
所以从这里我们就可以知道,鸡的数量应该是多少?(邀请学生回答)
鸡的数量 = 多算的脚数 ÷ 每只多算的脚数
也就是鸡的数量:(4 x 6 -18) ÷2 = 3(只)
知道了鸡的数量是3只后,动物公寓里总共有6个头,那么兔子有几只?(邀请学生回答)
你的推理能力非常棒,也就是兔子的数量:6-3 = 3(只)
过渡:在听了朱迪的推理后,尼克也想到了类似的方法,我们一起看看尼克的推理
尼克的推理:假设6只全部都是鸡
📌 解题思路:假设全是鸡,总脚数应为______________只。实际有___只,少算了___只。因为把_________________________。所以兔子的数量是:
朱迪的推理-数学算式法
2 × 6 = 12
18
6
兔子当成鸡,每只少算2只脚
兔的数量 = 少算的脚数 ÷ 每只少算的脚数
兔子的数量:(18 - 2 x 6 ) ÷2 = 3(只)
鸡的数量:6-3 = 3(只)
尼克的推理就是先假设6只全部都是鸡。
假设全是鸡,总脚数应为多少只?(邀请学生回答)
2 × 6 = 12,但实际有几只?(18只)少算了几只?(6只)
为什么?因为把兔子当成鸡,每只少算2只脚,所以兔子的数量应该怎么算?(邀请同学回答)
兔的数量 = 少算的脚数 ÷ 每只少算的脚数
所以最终我们应该怎么列式子?(邀请同学上台列式子)
兔子的数量:(18 - 2 x 6 ) ÷2 = 3(只)
知道了兔子的数量是3只之后,那么鸡的数量多少只?
鸡的数量:6-3 = 3(只)
总结:不管是朱迪的推理还是尼克的推理,得出的答案都是3只兔子和3只鸡。
过渡:那么在有了这个的基础上,相信同学们能够和朱迪一起,计算出最开始的动物公寓总共有多少只鸡和兔子了!一起通过程序来体验吧!
朱迪的推理-数学算式法
请同学们借助朱迪或者尼克的思路,一起来计算疯狂动物城的动物公寓究竟住了有多少只鸡和兔子!并将结果记录到探究单上
任务目标
1、学生文件 -- 1、数学算式法【程序体验】 -- 活动探究单.html
文件位置
请同学们借助朱迪或者尼克的思路,一起来计算疯狂动物城的动物公寓究竟住了有多少只鸡和兔子!并将结果记录到探究单上
下面请同学们打开1、学生文件 -- 1、数学算式法【程序体验】 -- 活动探究单.html 程序,开始和朱迪、尼克一起计算动物公寓的鸡和兔子的数量吧!(学生实践)
朱迪的推理-数学算式法
🦊
🐰
动物公寓里数到有35个头,94只脚
35
140
140
46
46
23
23
12
35
70
70
24
24
12
12
23
相信通过同学们的推理,大家都算出了鸡和兔子的数量,那哪个同学愿意上台分享自己的想法呢?(邀请同学回答)
比如按照朱迪的推理,先假设全都是兔子时,总脚数应该为多少?(35x4=140)
但是实际上只有94只,说明我们多算了几只?(140-94=46)
而这些多算的脚就是因为鸡被算多了2只脚,因此我们可以算出鸡的数量等于多少?(46÷2=23只)
一共有35个头,算出了鸡有23只,所以兔子有几只?(35-23=12只)
那如果按照尼克的推理,假设全是鸡的话,我们来验证一下算的是否和朱迪的一样。
首先如果全部都是鸡的话,总脚数应该为多少?(30*2=70只)
但是实际上却又94只,说明我们少算了几只?(94-70=24)
而这少算了24只脚其实是谁的脚被少算了?(兔子)
所以兔子的数量应该怎么算?(24÷2=12只)
一共有35个头,算出了兔子有12只,所以鸡有几只?(35-12=23只)
刚才我们用数学算式法解决了鸡兔同笼问题,其实还有一种更直观、更 “看得见” 的方法。
过渡:接下来,就让我们请出动物公寓里最 “慢工出细活” 的闪电树懒,看看它用表格法是怎么一步步监控、找出答案的吧!
闪电的监控
Part-02
Part-02
枚举法遍历
闪电的监控-枚举法遍历
我..可以..利..用..表..格..一步..一步..来..计..算..鸡..和..兔..子..的..数..量
核心逻辑:从假设全是鸡开始,逐步减少鸡的数量、增加兔的数量,计算总脚数,直到匹配目标值(94只脚)。
鸡的数量(只) 兔的数量(只) 总脚数(只)
35 0 70
34 1 72
33 2 74
....... ...... ......
相信通过同学们的推理,大家都算出了鸡和兔子的数量,那哪个同学愿意上台分享自己的想法呢?(邀请同学回答)
比如按照朱迪的推理,先假设全都是兔子时,总脚数应该为多少?(35x4=140)
但是实际上只有94只,说明我们多算了几只?(140-94=46)
而这些多算的脚就是因为鸡被算多了2只脚,因此我们可以算出鸡的数量等于多少?(46÷2=23只)
一共有35个头,算出了鸡有23只,所以兔子有几只?(35-23=12只)
那如果按照尼克的推理,假设全是鸡的话,我们来验证一下算的是否和朱迪的一样。
首先如果全部都是鸡的话,总脚数应该为多少?(30*2=70只)
但是实际上却又94只,说明我们少算了几只?(94-70=24)
而这少算了24只脚其实是谁的脚被少算了?(兔子)
所以兔子的数量应该怎么算?(24÷2=12只)
一共有35个头,算出了兔子有12只,所以鸡有几只?(35-12=23只)
刚才我们用数学算式法解决了鸡兔同笼问题,其实还有一种更直观、更 “看得见” 的方法。
过渡:接下来,就让我们请出动物公寓里最 “慢工出细活” 的闪电树懒,看看它用表格法是怎么一步步监控、找出答案的吧!
闪电的监控-枚举法遍历
从 “全是鸡” 的猜想出发,一步步调整鸡和兔子的数量,直到找出刚好有94只脚的正确答案,破解 “鸡兔同笼” 谜案!
任务目标
1、学生文件 -- 2、枚举法遍历【程序体验】 -- index.html
文件位置
下面我们从 “全是鸡” 的猜想出发,一步步调整鸡和兔子的数量,直到找出刚好有94只脚的正确答案,破解 “鸡兔同笼” 谜案!
一起打开1、学生文件 -- 2、枚举法遍历【程序体验】 -- index.html 程序开始探索吧!(学生实践)
闪电的监控-枚举法遍历
任务1:单步替换操作
1、点击【单步】按钮,将1只鸡替换成1只兔:
鸡的数量变为:_____只
兔的数量变为:_____只
当前总脚数变为:_____只
脚数增加了:_____只
2、再次点击【单步】,将第2只鸡替换成兔:
鸡的数量变为:_____只
兔的数量变为:_____只
当前总脚数变为:_____只
脚数又增加了:_____只
枚 举 法
通过多次操作,你发现了什么规律?
每把1只鸡换成1只兔,总脚数就会:_____只。
任务2:规律发现
34
1
72
2
33
2
74
2
2
任务3:规律总结
根据上面规律,可算出需替换多少只鸡为兔,让总脚数达到94只:
1. 总共需要增加的脚数:94 - ___ = 24只
2. 每替换1只增加2只脚,所以需要替换的次数:__ ÷ 2 = 12次
3. 因此,兔的数量 = 12只;鸡的数量 = ______ = _____只
70
24
35-12
23
时间到,谁来说说,点击【单步】按钮后,现在鸡、兔的数量和脚数变成了多少?(鸡变成 34 只,兔变成 1 只,总脚数是 72 只!)
非常准确!那脚数比刚才多了几只?(多了 2 只)
如果我们再点一次【单步】,把第 2 只鸡也换成兔。谁再来说说自己的探究成果?
(鸡变成 33 只,兔变成 2 只,总脚数 74 只,又多了 2 只脚)
因此通过观察发现,每把1只鸡换成1只兔,总脚数就会如何变化?(多出两只)
现在我们知道,每换一次就多 2 只脚。
所以我们总共还需要增加90-70=24只,而且提替换1只鸡就会增加2只脚,所以我们总共需要替换的次数就是
24÷2=12次。而这12只多出的脚是谁的脚?(兔子)
因此鸡的数量为多少?(35-12=23)只。
这种一步步尝试、找到答案的方法,我们叫做枚举法
但其实这种 “重复替换、计算、判断” 的过程,其实可以写成一套固定步骤,让电脑自动完成— 这就是算法。
过渡:下面我们一起来看看这个案件如果交给我们的超级计算机的话,它会如何解决吧!
超级计算机
Part-03
Part-03
编程验证法
超级计算机-编程验证法
STEP 01 初始化
设定初始值:鸡的数量 = 35,兔的数量 = 0。
STEP 02 计算总脚数
公式:总脚数 = 鸡数 × 2 + 兔数 × 4。
STEP 03 判断与循环
把脚的数量与94进行比较
如果不相等,则鸡数量-1,兔数量+1,回到第2步继续;
如果相等,则输出当前鸡的数量和兔的数量,结束循环
1、学生文件 -- 3、算法流程图【化流程图】 -- index.html
我们可以看到,编程验证法的思路,其实和我们刚才的枚举法很相似。
首先第一步进行初始化,设定鸡的数量是35,兔的数量是0,也就是和我们最开始假设 “全是鸡” 一样;
第二步:计算总脚数—— 用我们熟悉的公式:总脚数 = 鸡数 ×2 + 兔数 ×4;
第三步:判断与循环—— 把脚的数量与94进行比较,如果不相等,则鸡数量-1,兔数量+1,回到第2步继续;如果相等,则输出当前鸡的数量和兔的数量,结束循环!
那接下来,就让我们一起通过程序梳理过程,变成计算机能看懂的 “破案流程图”吧!
请同学们打开1、学生文件 -- 3、算法流程图【化流程图】 -- index.html 的程序,开始梳理破案流程图吧!(学生实践)
超级计算机-编程验证法
思考:如果先假设35只都是兔,用枚举法遍历相应数求解时, 应该对算法进行哪些调整?
数量设置
设置鸡的数量a=0,兔的数量b=35
数量计算
鸡的数量a=a+1 兔的数量b=b-1
否
是
时间到,哪个同学来分享自己的破案流程图?(邀请学生分享)
这位同学逻辑非常清晰,下面我们以顺着这个同学是思路来总结这个破案流程图吧!
首先在最开始的时候,我们需要设置两个数量,分别是哪两个数量?(邀请同学回答-鸡和兔子)
设置完成后,我们就设置脚的总数量为c,并且计算方法是a*2+b*4
完成了这些基本设置后,我们开始进行判断,判断的依据是什么?哪个同学来说说?(脚的数量是否等于94)
如果不是的话,我们走左边的分支,将鸡的数量-1,兔的数量加1
然后继续往回,根据刚才更新过的鸡的数量和兔的数量来计算脚的总数量
然后继续判断脚的数量是否等于94,如果是,那么我们就直接输出a和b的值,也就是鸡和兔的数量。
这个时候请同学们思考一个问题:如果先假设35只都是兔,用枚举法遍历相应数求解时, 应该对算法进行哪些调整?(邀请同学回答)
首先我们要更改数量的设置。设置鸡的数量a=0,兔的数量b=35
除了这个,还有哪个同学发现还需要修改那一部分吗?(邀请同学回答)
你真是火眼金睛,我们还需要修改数量计算,将鸡的数量设置为a=a+1,兔的数量设置为b=b-1
在这里,我们通过流程图已经梳理了整个案件的计算过程
过渡:下面我们就一起来试试用超级计算机来验证我们的这个过程吧!
超级计算机-编程验证法
思考一:程序中使用了什么循环结构?
思考二:使用什么表示条件判断?
思考三:条件满足时,如何结束循环?
利用海龟编辑器打开“1、学生文件--4、超级计算机【编程体验】--while循环求解.py”程序,验证朱迪和尼克的算法是否正确,并思考一下问题:
任务目标
利用海龟编辑器打开“1、学生文件--4、超级计算机【编程体验】--while循环求解.py”程序,验证朱迪和尼克的算法是否正确,并思考一下问题:
思考一:程序中使用了什么循环结构?
思考二:使用什么表示条件判断?
思考三:条件满足时,如何结束循环?
现在请同学开始用超级计算机来验证我和朱迪的猜想吧!(学生实践)
超级计算机-编程验证法
思考一:程序中使用了什么循环结构?
思考二:使用什么表示条件判断?
思考三:条件满足时,如何结束循环?
while True 无限循环:
创建一个永不停止的循环,直到遇到终止条件
if ...else....条件判断
检查当前鸡兔脚总数是否等于94,决定后续操作
break 循环终止
一旦找到正确答案,立即跳出循环,结束程序。
时间到,哪个同学来说说,在这个超级计算机的代码里,使用了什么循环结构?(邀请同学回答)
while True 无限循环,也就是创建一个永不停止的循环,直到遇到终止条件
那么这个程序中又是用了什么语句来表示条件判断的?(邀请同学回答)
if ...else....条件判断:检查当前鸡兔脚总数是否等于94,决定后续操作
最后当我们的条件满足后,要如何结束循环?(邀请同学回答)
break 循环终止:一旦找到正确答案,立即跳出循环,结束程序。
总结,通过这个超级计算机,我们知道了,其实程序就是给电脑讲清楚 “一步步怎么做”
过渡:我们今天的学习之旅也即将接近尾声,一起来总结今天学习的内容吧!
全城大挑战
Part-04
Part-04
韩信点士兵
全城大挑战-韩信点士兵
数学算式法
掌握用假设法解决鸡兔同笼问题
枚举法遍历
观察数据变化规律,快速定位答案
算法逻辑
学会用流程图清晰描述解题步骤
编程实现
利用Python编写代码,自动化求解
🎉 恭喜你们,都是疯狂动物城的荣誉侦探! 🎉
今天的冒险之旅即将结束!牛局长要为我们每一位出色的小侦探颁发“荣誉侦探”勋章!
通过今天的学习,我们不仅学会了用多种方法解决鸡兔同笼问题,还了解了算法和编程的基本思想。希望大家能保持这份好奇心和探索精神,去发现更多数学和编程的奥秘!
全城大挑战-韩信点士兵
韩信是我国史上很有领兵能力的将领。在民间流传一个故事:有一次,韩信带1500名勇士与楚军交战,战死四五百人。
为了再战,韩信快速清点人数,他要求3人一排站队,结果多出2人;5 人一排站队,多出4人;7人一排站队,又多出6人。
韩信马上宣布,我军有1049名勇士。汉军本来就信服韩信,这一来更相信他有神机妙算。于是士气大振,一鼓作气,击败楚军。
课后思考:在知道了这三次布阵的结果后,韩信是如何算出到底有多少名士兵呢?
如何设计算法让计算机来找出这个数?
下面我们一起来完成一个全城大挑战-韩信点兵。先一起来看看这个故事的起源(让同学们自行阅读这个故事)
故事读完之后,请同学们思考一下:在知道了这三次布阵的结果后,韩信是如何算出到底有多少名士兵呢?(邀请同学分享自己的看法)
那我们要如何设计算法让计算机来找出这个数?请同学们用海龟编辑器打开1、学生文件--5、韩信点士兵【拓展提升】--韩信点兵.py 补充完整if语句后面的判断条件吧!
第六单元 快速遍历数据
课再见
课再见
我们下节
我们
下节
$nullnull