您当前的位置:首页 > 计算机 > 编程开发 > Python

Python趣味编程3则:李白买酒、猴子吃桃、宝塔上的琉璃灯

时间:01-07来源:作者:点击数:

1、李白买酒

问题描述:

李白街上走,提壶去买酒。遇店加一倍,见花喝一斗。店不相邻开,花不成双长。三遇店和花,喝光壶中酒。请问此壶中,原有多少酒?

简单分析:

题目中加一倍是指再购买和壶中酒同样数量的酒,喝一斗是指喝掉壶中的一斗酒。根据描述,李白应该是先后遇到了酒店、鲜花、酒店、鲜花、酒店、鲜花,最后正好把酒喝完。

图片

要计算酒壶中原有多少酒,可以从后向前倒推,最后喝完为0,往前遇到鲜花加1斗,再往前遇到酒店减为一半,如此操作三次之后,得到的数字即为初始状态时酒的数量。

参考代码:

图片

运行结果:0.875

2、宝塔上的琉璃灯

问题描述:

有一座八层宝塔,每一层都有一些琉璃灯,每一层的灯数都是上一层的二倍,已知共有765盏琉璃灯,求解每层各有多少。

简单分析:

可以假设最高层琉璃灯的数量为1、2、3、4...,然后分别计算各层灯数,如果各层灯数之和为765,则给出答案并停止假设。

参考代码:

图片

上面代码中使用到了标准库itertools中的函数count(start, step),返回包含从start开始且以step为步长的无限长整数数列(start, start+step, start+2*step, start+3*step,...)的count对象。

代码中使用列表推导式计算假设顶层灯数为first时各层的灯数。

运行结果:

图片

下面是求解问题的另一个思路:

假设顶层灯数为x,那么顶层灯数计算方法如下:

图片

参考代码:

图片

3、猴子吃桃

问题描述:

小猴子有一天摘了很多桃子,一口气吃掉一半还不过瘾,就多吃了一个;第二天又吃掉剩下的桃子的一半多一个,以后每天都是吃掉前一天剩余桃子的一半还多一个,到了第五天再想吃的时候发现只剩下一个了。问小猴子最初摘了多少个桃子。

简单分析:

从后向前看,每天剩余桃子的数量加上1再乘以2就是前一天桃子的数量。

参考代码:

图片

运行结果:46

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门