欢迎你来到站长在线的Python题库,鸡兔写完Python教程以后,还是来一个Python的题目吧!想来想去,还是写一个经典的题目为好,作为本栏目的第一个题目。我就想到了比较热门的题目《鸡兔同笼的问题》,本文不是用数学的方法,而是用Python编程的方法解决鸡兔同笼的问题。解决问题具体的方法就是:顺序语句假设法、选择语句判定法、while循环语句遍历法、for循环语句遍历法。下面我来一一解答:
目录
1、顺序语句假设法
2、选择语句判定法
3、while循环语句遍历法
4、for循环语句遍历法
题目:有一些鸡和兔子关在一个笼子里面,从上面数,一共有10个头;从下面数,一共有36只脚。问:笼中有多少只鸡和兔?
这里写Python代码的时候,涉及到几个词语的英语单词,英语好的,就用英语,和我一样英语差的就写拼音,效果是一样的。(当然使用中文汉字也是可以的,但是不建议使用中文汉字。)
鸡:ji、chick
兔:tu、rabbit
头:tou、head
脚:jiao、foot
鸡脚:ji_jiao、chick_foot
兔脚:tu_jiao、rabbit_foot
接下来,用编程的思想,把题目已知条件,或者隐藏的条件,转换成变量,输入到Python里面。
1、顺序语句假设法
解题思路和编程流程:
鸡和兔的数量是10
鸡脚和兔脚的数量是36
全部是鸡时(即兔抬起两只脚时,视为鸡),脚的数量是10*2=20
总脚减去鸡的脚,剩余脚的数量就是兔的脚,剩余36-20=16只脚,这抬起来的16只脚全部是兔子的
每只兔子都是抬起了2只脚,这抬起来的16只脚,其实就是16/2=8只兔子
因为兔是8只,鸡就是10-8=2只
输出鸡和兔的数量
使用IDLE中文版新建文档的名称为:鸡兔同笼.py,写入以下代码:
tou = 10 # 鸡头和兔头一共10只
jiao = 36 # 鸡脚和兔脚一共36只
ji_jiao = tou*2 # 全部为鸡时(即兔抬起两只脚时,视为鸡),鸡的脚是头的两倍
tu_jiao = jiao - ji_jiao # 抬起来的两只脚就是兔子的脚
tu = tu_jiao // 2 # 兔等于抬起来的两只脚的一半,这里用//(整除)而不是/(除)
ji = tou - tu # 鸡的数量是总数减去兔的数量
print('鸡的数量',ji) # 输出鸡的数量
print('兔的数量',tu) # 输出兔的数量
运行结果为:
鸡的数量 2
兔的数量 8
>>>
2、选择语句判定法
ji =int(input('请输入一个1至10数值的整数'))
tu = 10 - ji
if (2*ji+4*(10-ji)==36) and (ji + tu == 10):
print("鸡:",ji,"兔:",tu) # 输出鸡和兔的数量
运行结果:
输入的值是1的时候,不符合条件,没有显示:
请输入一个1至10数值的整数1
>>>
当输入的值是2的时候,符合条件,显示结果:
请输入一个1至10数值的整数2
鸡: 2 兔: 8
>>>
当然,这里总共才10,最多输入10次,就满足条件了,要是很大的数值的话,目前的方法还是不行的,可以使用下面的while循环和for循环。
3、while循环语句遍历法
ji = 0
tu = 0
while ji <= 10 and tu <= 10:
if ji + tu == 10:
print("鸡%d只,有兔%d"%(ji,tu))
if 2*ji + 4 * tu == 36:
print("有鸡%d只,有兔%d只"%(ji,tu))
break
ji += 1
tu = 10 - ji
运行结果为:
鸡1只,有兔9
鸡2只,有兔8
有鸡2只,有兔8只
>>>
4、for循环语句遍历法
for ji in range(0,10): # 鸡的数量从1开始循环到10
if 2*ji+4*(10-ji)==36: # 2倍鸡的脚+4倍兔的脚是36
print("鸡:",ji,"兔:",10-ji) # 输出鸡和兔的数量
运行结果为:
鸡: 2 兔: 8
>>>
到此为止,本文的《鸡兔同笼的问题》解决问题具体的方法就是:顺序语句假设法、选择语句判定法、while循环语句遍历法、for循环语句遍历法。已经讲解完毕了,有问题可以给我留言哦!