Python 练手程序合集(一)
一、百钱百鸡
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
# encoding: utf-8x = 1
y = 1while x <= 20:while y <= 33:z = 100 - (x + y)if (z % 3 == 0) and (x * 5 + y * 3 + z / 3 == 100):print("公鸡为%d只,母鸡为%d只,小鸡为%d只" % (x, y, z))y += 1y = 1x += 1
这样的效率未免不高,测算一下这样的方案需要多少时间,
# encoding: utf-8
import timex = 1
y = 1start = time.clock()
while x <= 20:while y <= 33:z = 100 - (x + y)if (z % 3 == 0) and (x * 5 + y * 3 + z / 3 == 100):print("公鸡为%d只,母鸡为%d只,小鸡为%d只" % (x, y, z))y += 1y = 1x += 1
end = time.clock()
print(end - start)
这样就能粗略的估计出需要多少时间得出结果,我的机器大概是0.0004s左右得出计算结果,这样的解决方案一看就不够专业,换一种通用的衡量程序性能的方法cProfile
# encoding: utf-8
import cProfiledef clca():x = 1y = 1while x <= 20:while y <= 33:z = 100 - (x + y)if (z % 3 == 0) and (x * 5 + y * 3 + z / 3 == 100):print("公鸡为%d只,母鸡为%d只,小鸡为%d只" % (x, y, z))y += 1y = 1x += 1if __name__ == '__main__':clca()print(cProfile.run('clca()'))
或者不在主函数中运行clca,直接测算也是可以的,我保留了完整的主体结构,测量结果如下图所示:
因为之前测量的是0.0004s,所以这个测量程序的精度只到0.001s故而无法精准测量了,小程序我也不进行进一步探索怎么修改精度了,只是提供一个方法
# encoding: utf-8
import timex = 1
y = 1start = time.clock()
for x in range(1, 21):for y in range(1, 34):z = 100 - (x + y)if (z % 3 == 0) and (x * 5 + y * 3 + z / 3 == 100):print("公鸡为%d只,母鸡为%d只,小鸡为%d只" % (x, y, z))y += 1y = 1x += 1
end = time.clock()
print(end - start)
把while循环方法改为for循环,消耗时间增长到0.0005s左右,可是我们还可以进一步改进,我们可以对方程通过进一步的推导来简化计算,从方程中可以得出,x=4k 和 y=25-7k 和 z=75+3k 则公鸡的数量一定是4的倍数,母鸡的数量以7递减,小鸡的数量以3递增
这就可以大大简化计算为
# encoding: utf-8
import timex = 1
y = 1start = time.clock()
for x in range(0, 21, 4):for y in range(25, 0, -7):z = 100 - (x + y)if (z % 3 == 0) and (x * 5 + y * 3 + z / 3 == 100):print("公鸡为%d只,母鸡为%d只,小鸡为%d只" % (x, y, z))y += 1y = 1x += 1
end = time.clock()
print(end - start)
运行可知,时间下降到不到0.0001秒,提高了运行效率
二、五家共井
五家共井,甲二绠(汲水用的井绳)不足,如(接上)乙一绠;乙三绠不足,如丙一绠;丙四绠不足,如丁一绠;丁五绠不足,如戊一绠;戊六绠不足,如甲一绠,皆及
# encoding: utf-8for k in range(1, 5):for e in range(1, 500):a = 721 * k - 6 * eb = 721 * k - 2 * ac = 721 * k - 3 * bd = 721 * k - 4 * ce = 721 * k - 5 * dresult1 = a + 6 * eresult2 = b + 2 * aresult3 = c + 3 * bresult4 = d + 4 * cresult5 = e + 5 * dif result1 == result2 == result3 == result4 == result5:print('井深%d:甲家绳长%d乙家绳长%d丙家绳长%d丁家绳长%d戊家绳长%d' % (result1, a, b, c, d, e))
戊家的绳子是最短的,所以以e为循环单位,第二组解算出来就非常吓人了·····
井深721:甲家绳长265乙家绳长191丙家绳长148丁家绳长129戊家绳长76
井深1442:甲家绳长530乙家绳长382丙家绳长296丁家绳长258戊家绳长152
井深1442米的话估计一天啥也不用干光打水玩了,往下愿意算就算去吧,一口井直通地球另一端指日可待
Python 练手程序合集(一)相关推荐
- Python 练手程序合集(三)
六.协同过滤 Slope One是一个可以用于推荐系统的算法,在只有很少的数据时候也能得到一个相对准确的推荐,而且算法很简单, 易于实现, 执行效率高,由此衍生的还有加权 Slope One 算法.双 ...
- 55 个 Linux 练手项目合集,打通你的 Linux 任督二脉 !
说在前头:无论你是通过上面的楼+课程,在老师带领下系统地学习 Linux,还是通过下面的练手教程,自主学习,我们都希望你能够坚持,一步一步来,别怕重复. 关于这50个练手项目:学习任何语言,最终都是通 ...
- java编程计算器程序代码_34 个送给 Java 程序员的练手项目合集
人类一生中,99% 的技能都是靠实践学来的,编程更是如此. 在这一点上,编程和打篮球很像:你得亲自上场去打,才能学会篮球:同样,亲手敲下代码,才能真正学会「编程」.太多人看完一本书.几个 G 的视频后 ...
- 33 个送给 Java 程序员的练手项目合集
人类一生中,99% 的技能都是靠实践学来的,编程更是如此. 人类一生中,99% 的技能都是靠实践学来的,编程更是如此. 在这一点上,编程和打篮球很像:你得亲自上场去打,才能学会篮球:同样,亲手敲下代码 ...
- (转)Python学习路径及练手项目合集
转载自知乎 Wayne Shi,仅仅为了方便收藏查看,侵权删. 阶段1:入门知识 零编程基础的可以先从下面几个教程了解编程及环境入门知识.( 已有编程基础直接从阶段2起步) 1. 编程新手指南 2. ...
- python练手程序之猜大小
#看了前面几个章节,对python最基础的语法有了一定了解.写个程序来验证一下 #程序名:猜大小 #按投骰子的规则来猜大小,用户有初始资金1000,每次下注一定金额,直至用户输光.赢够10000或主动 ...
- python练手程序_写的python练习程序
程序一: print("who do you think I am?") m=input() print("OH,yes!I am %s"%m) 程序二:猜已经 ...
- python练手程序_100个python练手小程序
1.生成200个指定长度的随机码 import random import string def rand_str(num,len=7): f = open('file.txt','w') count ...
- python小程序源代码-整理了适合新手的20个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...
最新文章
- 以前不知道的,现在知道了(微机原理)
- centos ip配置_vitrualbox虚拟机下centos系统设置固定IP
- 创维 linux内核,Linux2.6内核在创维特jx2410平台上的移植四
- oracle10 监听日志,windows 清空oracle的监听日志listener.log
- mysql用 fifo 记录日志_MySQL一丢丢知识点的了解
- 通用的websocket模板代码
- YUV格式转换RGB(基于opencv)
- string赋值-单引号和双引号的区别(php)
- 【iPhone X重磅发布】携A11人工智能芯片登场,人脸识别9大特征
- 深度解读B2B与B2C营销策略的差异
- 泛微 E9开发视频教程
- PDF怎么转换成CAD图纸?PDF转CAD教程
- @media scree 手机移动端屏幕自适应
- 运行不了cracker.jar?激活MyEclipse
- iPhoneX 适配笔记
- 动手学Excel数据分析与可视化
- 服务器硬盘识别不到d盘,windows10系统本地磁盘找不到d盘如何解决
- 在PPT中怎么对图片进行排版?使用SmartArt一键教你搞定!
- 单片机c语言p1口转弯灯实验,单片机p1口转弯灯实验程序
- transform.invert 预处理逆操作