第29期-微生物增殖
1 问题描述
假设有两种微生物 X 和 Y ,X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=90,求60分钟后Y的数目。
X先吃Y,X、Y再增殖
2 解题思路
- 1-60分钟,使用for循环遍历每一分钟
- 由于X先吃Y,X、Y再增殖,所以先减后乘
- 判断时间是否是2或者3的倍数,使用求余
3 解题方法
X, Y = 10, 90 for i in range(1, 61): Y -= X if i % 2 == 0: Y *= 2 if i % 3 == 0: X *= 2 print(Y)
第1行: 定义变量X与Y,并为之赋值10、90
第2行: 使用for循环遍历每一分钟
第3行: 由于X先吃Y,X、Y再增殖,所以先给Y赋值被吃后的值
第4-7行: 判断时间是否为2分钟或三分钟,是两分钟则Y翻倍,是三分钟则X翻倍
第8行: 打印Y的值
代码运行结果为:
小思考
如果将Y的初始值换成89,结果会如何呢?代码如下
X, Y = 10, 89 for i in range(1, 61): Y -= X if i % 2 == 0: Y *= 2 if i % 3 == 0: X *= 2 print(Y)
代码运行结果为:
可以看到,仅仅是修改了一点点的值,最终的结果居然是Y灭绝了!正所谓差之毫厘,谬之千里,各位小伙伴写代码时一定要细心呀

浙公网安备 33010602011771号