# 第29期-微生物增殖
Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。
# 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
2
3
4
5
6
7
8
2
3
4
5
6
7
8
第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)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
代码运行结果为:
可以看到,仅仅是修改了一点点的值,最终的结果居然是Y灭绝了!正所谓差之毫厘,谬之千里,各位小伙伴写代码时一定要细心呀
# 4 视频解析
高清视频讲解,请查看AI大学堂Python基础实战100例 (opens new window)
关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码