代码2:鸡兔同笼问题

论坛 期权论坛 期权     
小码哥爱编程   2019-7-13 16:19   3104   0
上篇复习:
上一篇我们讲了除法余数和最小公倍数问题,今天我先让女儿根据求最小公倍数的例子,自己写个求最大公约数的程序,来复习一下上次的知识,代码中的备注是由我加上的。


注:源代码可从文章底部的网盘链接下载。
BUG整理:
  • if判断里面的“==”写成了“=”,“=”是赋值,“==”是比较。
  • 最后的print没有跟while对齐,而是跟if齐平,造成每次循环都输出一次。

/*鸡兔同笼问题*/



今日题目:
笼子里有35只鸡和兔子,一共94条腿,请问鸡有多少只?

答案:
鸡:23只,兔子:12只。
如果所有动物都是2条腿的话,共有35*2=70条腿,那么现在是94条腿,多出来94-70=24条腿,我们知道这多出来的24条腿是每只兔子少算的那2条腿,那么兔子就有24/2=12只,鸡有35-12=23只。

编程思路:
前面文章中已讲过,因为计算机的运算能力足够强大,我们可以把鸡的只数从0到35,逐个数进行尝试,直到找到符合条件的只数。


实现代码:


注:源代码可从文章底部的网盘链接下载。
代码讲解:
  • 我们定义了两个变量,chick_num和rabbit_num分别用来存储每轮循环时的鸡和兔子的数量,一开始我们把鸡的数量设为0,兔子的数量设为35。
  • 程序中我们用到while循环来逐个尝试,每轮循环结束时鸡的数量加1,兔子数量减1,直到找到鸡和兔子符合条件的数量或者鸡的数量已经等于动物总数量。
  • 循环内我们使用if来判断本次循环条件下鸡和兔子的腿相加是否等于总腿数(94条),如果等于则执行break跳出循环。
  • 最后调用print函数输出结果。

拓展1:
上面的v1代码只能计算固定条件的鸡兔同笼题目,我们还可以在程序里加入input输入语句来实现运行中动态输入数据,另外输出时也可以利用print格式化输出。


注:源代码可从文章底部的网盘链接下载。
拓展2:
上面的v2代码虽然可以动态输入,格式化输出,但是并未判断输入的参数是否有效(比如:鸡和兔子共100只,一共180条腿,是无解的)。我们可以通过循环来验证输入参数的合法性,大家可以思考一下,甚至尝试去写一下,下一篇我们会给出参考程序。

源码下载网盘:
https://pan.baidu.com/s/1JxSadsNqhXoqY18FrUJoBw
提取码:5owv


搭建编程环境参考文章:

为孩子搭个VSCode+Python的编程环境

更早例子点击下面文章:
代码1:除法余数和最小公倍数问题


写在最后:

个人认为,一开始你不必去想着系统化的学习,先跟着例子去尝试练习,慢慢的这些陌生的符号命令也就熟悉了,等到对程序有了一定的认知后再回头来系统学习也不迟,而且也会很快。如果一开始就想着如何系统化的学习,对于没有基础的孩子来说头必定会很大,自然也容易失去兴趣。





分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:15
帖子:3
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP