本文讲述了python基础编程100例:第42期-猴子分桃!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:
第42期-猴子分桃
1 问题描述
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,
第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
用python解决这个数学难题吧!
2 解题思路
第一步: 五次相同的动作,for循环
第二步: 由于不确定最后的桃子数量,所以需要使用while循环来尝试,直到满足条件为止
3 解题方法
n = 1
while True:
try:
b = n
for i in range(5):
assert (b - 1) % 5 == 0
b = (b - 1) / 5 * 4
break
except:
n += 1
print(n)
第1行: 定义初始桃子数量为n并赋值为1
第2行: 从n=1开始尝试,无限循环知道满足条件
第3、9-10行: 使用try、except语句,若满足条件则结束循环,不满足条件则报错并让n+1进行下次循环
第4行: 定义变量b并将n的值赋值给b,这样可以不改变原本n的值
第5行: for循环遍历五次
第6行: assert函数判断丢掉一个桃子后剩下的桃子是否可以被平分,是则继续下一步,否则报错进入except语句
第7行: 给b赋值拿走五分之一桃子后剩余的桃子数量
第8行: 五次循环过后表示这个数符合题意,结束循环
第11行: 打印桃子数量
代码运行结果为:
小思考
这里用到了for、except语句与assert函数结合的方式,简单讲解一下:
for、except语句在第四十期已经讲解过,try里面的内容如果报错,就会停止运行进入except后面的语句中
而assert函数会判断后面语句是否为True,若为False则报错
两者配合效果会意想不到,后面咱们会经常遇到
更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。
如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!