写点什么

Python 之鸡兔同笼

作者:向阳逐梦
  • 2022 年 9 月 30 日
    四川
  • 本文字数:1533 字

    阅读完需:约 5 分钟

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 行: 定义变量 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 函数打印鸡和兔的数量,否则打印此题无解

方法二

n=input()
l=list()
for k in range(n):
    inputNum=input()
    #odd
    if inputNum%2!=0:
        min=max=0
    else:
    #even
    #min
        j=inputNum/4
        i=inputNum%4/2
        min=i+j
    #max
        max=inputNum/2
    l+=[(min,max)]
   
for a,b in l:
    print a,b
复制代码


发布于: 刚刚阅读数: 3
用户头像

向阳逐梦

关注

人生享受编程,编程造就人生! 2022.06.01 加入

InfoQ签约作者、阿里云“乘风者计划”签约博主

评论

发布
暂无评论
Python之鸡兔同笼_9月月更_向阳逐梦_InfoQ写作社区