# 第8期-鸡兔同笼

Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

# 1 问题描述

大约在1500年前,《孙子算经》中就记载了这个有趣的问题:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”
意思是,有若干只鸡和兔子关在同一个笼子里,从上面数有35个头,从下面数有94只脚,问:笼子中有多少只鸡?多少只兔子?

我们今天用Python解决鸡兔同笼问题:请用户输入头数和脚数,判断有多少只鸡,多少只兔子~

# 2 解题思路

第一步: 用input函数使用户输入头的个数和脚的个数
第二步: 判断鸡和兔子的数量,需要把握住关键条件“鸡+兔=头数;2鸡+4兔=脚数”,用两层for循环遍历鸡和兔的数量,计算结果
第三步: 输出正确结果

# 3 解题方法

head = int(input("请输入头数:"))                                                                
foot = int(input("请输入脚数:"))                                                                
x = 0  # 鸡                                                                                    
y = 0  # 兔子                                                                                       
answer = False                                                            

for x in range(head+1):                                                                 
    for y in range(head+1):                                                             
        if x + y == head and 2 * x + 4 * y == foot:                                        
            answer = True                                                                  
            break                                                                          
    if answer:                                                                             
        break                                                                              

if answer:                                                                                 
    print("鸡有", x, "只;兔子有", y, "只")                                                        
else:                                                                                      
    print("此题无解,请重新输入")                                                                    
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

第1行: 定义变量head,用input函数使用户输入头数,int函数将其转化为整型
第2行: 同理,定义变量foot,用input函数使用户输入脚数,int函数将其转化为整型
第3-4行: 定义变量x,y,分别表示鸡和兔子的数量,初始赋值均为0
第5行: 定义变量answer,这个问题有没有解,暂时不清楚,所以初始赋值先为False
第7行: 用for循环遍历0至head+1的整数,并为x赋值
第8行: 在for循环的基础上嵌套一个for循环,同样遍历0至head+1的整数,并为y赋值
第9-11行: 用if语句判断,如果两动物的数量和等于head,脚之和等于foot,则answer为True,并用break退出第一重循环
第12-13行: 继续用if语句判断变量x的循环,如果答案为真,则退出循环
第15-18行: 用if...else语句判断,如果答案为真,则用print函数打印鸡和兔的数量,否则打印此题无解

# 4 视频解析

高清视频讲解,请查看AI大学堂Python基础实战100例 (opens new window)
关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
AI大学堂公众号.png

更新于: 12/28/2021, 7:43:14 AM