百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,

用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。

分析:估计现在小学生都能手工推算这套题,只不过我们用计算机来推算,我们可以设公鸡为x,母鸡为y,小鸡为z,那么我们

可以得出如下的不定方程,

x+y+z=100,

5x+3y+z/3=100,

下面再看看x,y,z的取值范围。

由于只有100文钱,则5x<100 => 0

由于此处我们不是数学上研究不等式解法,而是让计算机为我们计算结果,所有暂不考虑效率问题。于是,从变量上我们便可以看出可以在三个循环中,逐个选出匹配条件。

Python的写法和循环机制是相当简单的,以上核心算法只需要一条语句便能计算出来:

循环

1 cock_price,hen_price,chick_price=5,3,1.0/3

2 cock_MaxNum,hen_MaxNum,chick_MaxNum=range(100/cock_price)[1:],range(100/hen_price)[1:],range(int(100/chick_price))[1:]3 items=[(cock,hen,chick)for cock in cock_MaxNum for hen in hen_MaxNum[1:] for chick in chick_MaxNum[1:]4 if int(cock*cock_price+hen*hen_price+chick*chick_price)==100 and chick%3==0 and cock+hen+chick==100]

这个循环是python的列表推导式-也是个轻量级循环,写法上就是把输出放在最左边(可能是元组,也可能是单个值)For写在中间(以For key in item这种形式存在),最后加上条件。

那以上算法的总体效果:

View Code

#赋值

cock_price,hen_price,chick_price=5,3,1.0/3

#计算

cock_MaxNum,hen_MaxNum,chick_MaxNum=range(100/cock_price)[1:],range(100/hen_price)[1:],range(int(100/chick_price))[1:]

items=[(cock,hen,chick)for cock in cock_MaxNum for hen in hen_MaxNum[1:] for chick in chick_MaxNum[1:]if int(cock*cock_price+hen*hen_price+chick*chick_price)==100 and chick%3==0 and cock+hen+chick==100]#输出

print('总数:'+str(len(items)))print('='*32)print('%-10s%10s%20s' % ('公鸡','母鸡','小鸡'))print('-'*32)for c initems:print('%-5s%10s%15s' %c)print('-'*32)

如果您有更简洁高效的写法,愿共分享

python百钱买百鸡问题答案_Python学习-算法-百钱买百鸡的问题相关推荐

  1. Python爬虫你需要积累这些基本知识_Python学习基础路线

    Python爬虫你需要积累这些基本知识_Python学习基础路线 爬虫定义.分类和流程 爬虫定义 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则, ...

  2. python第五章课后编程题答案_Python核心编程-第五章课后习题

    5-1 整形 讲讲 Python 普通整型和长整型的区别 答:在2.7版本基本淡化了区别.真要区分的话,普通整型是32位或者64位,而长整型只与PC内存有关,很大就是了 5-2 运算符 (a) 写一个 ...

  3. python入门之运算符的使用的答案_python基础课程 第2章 (运算符)

    纸飞机编程 2019-12-09 17:11:26 算术运算符 加,减,乘,除 四个运算符是我们平时最常用的运算符 在Python中分别用+ - * / 四种符号来表示,运算优先级是先乘除再加减 取模 ...

  4. python基础第三章选择结构答案-python3 学习笔记(二)选择结构、循环结构

    python3 学习笔记 python 优雅 明确 简单 1.选择结构 (1)简单判断 if else 使用格式: if  条件: 表达式1 else: 表达式2 (2)多条件判断 elif 使用格式 ...

  5. python入门之运算符的使用的答案_python入门教程之基本算术运算符

    一.算术运算符 运算符 + - * / % **(幂)求次方 //(取整除,向下取整)如:9//2 =4 二.比较运算符 运算符 == != <>(不等于,类似!=) < > ...

  6. python大学教程吕云翔课后题答案_python大学教程吕云翔.ppt

    第五章 Python 数据结构 列表 ? 列表:类似于 C 语言中的数组概念,一个列表中可以包含任意个数据, 每一个数据称为元素. Python 允许同一个列表中元素的数据类型不同, 可以是整数.字符 ...

  7. python基础教程第二版修订版下册答案_Python基础教程(第2版 修订版)

    第1章 快速改造:基础知识 1.1 安装Python 1.1.1 Windows 1.1.2 Linux和UNIX 1.1.3 苹果机(Macintosh) 1.1.4 其他发行版本 1.1.5 时常 ...

  8. python语言程序设计实践教程实验八答案_Python程序设计实验报告: 实验八 文件...

    实验八 文件 班级:物流191 姓名:韩晶晶 学号:3190505140 指导老师:修宇 成绩: 日期:2020.6.3 [实验目的] 掌握读写文本文件或 CSV 文件,进而对数据进行处理的方法. [ ...

  9. python求两组同学的平均成绩_Python学习心得2:求平均值

    继续昨天的题目今天的练习又提出了新的要求,先来看下题目: 上一个练习中,我们完成了两组成绩的合并和排序. 不过,老师有了新的需求:想知道两组的平均分,以及把低于平均分的成绩也打印出来. 所以,在这个练 ...

  10. python中简述对象和类的关系_Python学习笔记(七)对象和类

    什么是对象 Python中所有的数据都是以对象的形式存在,无论是简单的数字类型还是复杂的代码模块.在Python中,当我们想要创建属于自己的对象或者修改已有对象的行为时,才需要关注对象的内部实现细节. ...

最新文章

  1. HTML 事件属性_03
  2. 又一个可视化神器Highcharts,Python版也有哦!
  3. hadoop Idea Win本地运行
  4. C++ 操作sqlite
  5. 烂泥:LVM学习之LVM基础
  6. 最适合程序员的电脑是什么?
  7. 【虚拟机】VMware启动时报错:该虚拟机似乎正在使用中....请按“获取所有权(T)”按钮获取它的所有权
  8. Delphi实现文件下载UrlDownloadToFile
  9. REST及RESTful原则
  10. java获取大写字母_获取中文大写首字母java实现
  11. 基于天地图热力图及区域划分
  12. TOP100summit2017:微博如何做到1小时增加一千台服务器应对鹿晗恋情带来的流量暴增
  13. 共阳极数码管显示0~9_《显示器件应用分析精粹》之(3)数码管静态显示
  14. 创业公司的股权分配 .
  15. rust进水器怎么用_净水器的正确使用方法?
  16. 斐讯n1刷鸿蒙系统,【总结】在N1上面成功刷入armbian并启动的步骤
  17. 一体化伺服电机编码器值清零或设置原点如何操作?
  18. 关于佛教出家人衣食住行的问答交流贴19(转贴)
  19. 脉冲函数、阶跃函数和斜坡函数
  20. java水平线代码_java 绘制直线,跪求源代码???

热门文章

  1. 读《断舍离》山下英子
  2. 群晖Docker容器“failed to initialize logging driver“解决办法
  3. 在生鲜电商领域创业到底是怎样的一种苦逼体验?【创业者说】
  4. 几款远程登录软件的对比
  5. 第三十二章 三更雪压飞狐城(二之全)
  6. CTF 实验吧 变异凯撒 writeup
  7. 机器学习在地球物理(地震)中的发展历程_1
  8. MySQL~锁的大集合(S锁、X锁、意向锁、自增锁、元数据锁、记录锁、间隙锁、临键锁、全局锁、死锁)
  9. python半圆,(小小黑科技)vue+echarts实现半圆图表
  10. 洛谷 P1315 观光公交