# 第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

第1行: 定义变量X与Y,并为之赋值10、90
第2行: 使用for循环遍历每一分钟
第3行: 由于X先吃Y,X、Y再增殖,所以先给Y赋值被吃后的值
第4-7行: 判断时间是否为2分钟或三分钟,是两分钟则Y翻倍,是三分钟则X翻倍
第8行: 打印Y的值

代码运行结果为:
image.png

# 小思考

如果将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

代码运行结果为:
image.png

可以看到,仅仅是修改了一点点的值,最终的结果居然是Y灭绝了!正所谓差之毫厘,谬之千里,各位小伙伴写代码时一定要细心呀

# 4 视频解析

高清视频讲解,请查看AI大学堂Python基础实战100例 (opens new window)
关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
AI大学堂公众号.png

更新于: 12/28/2021, 7:43:14 AM