本脚本的目的在于:通过当上帝,熟悉python代码的使用
背景:
- 有一个种族,在有限资源的世界里生存,可以繁衍,同时有寿命上限;
- 个体的生存条件之一是温度,不适宜的温度和寿命的限制导致个体死亡;
- 适宜的温度和剩余资源可以促进个体繁衍;
代码如下:
"""
@author : 24nemo
@date : 2022年03月15日
"""
import random
class Creature(object):
def __init__(self):
self.downTemp = random.randint(0, 100)
self.upTemp = random.randint(self.downTemp, 100)
self.age = 0
self.live = True
def time_lapse(self, resource, currentTemp):
if currentTemp > self.upTemp or currentTemp < self.downTemp:
self.live = False
return 0, None
if self.age >= 10:
self.live = False
return 0, None
if resource > 0:
return 2, Creature()
else:
return 1, None
def getPreferTemp(self):
return (self.downTemp + self.upTemp) / 2
num_creature = []
for i in range(7000):
num_creature.append(Creature())
for currentTemp in range(30, 70):
resource = 10000 - len(num_creature)
for epoch in range(100):
new_son = []
for i in num_creature:
state, son = i.time_lapse(resource,currentTemp)
if state == 2:
new_son.append(son)
resource -= 1
else:
pass
for i in range(len(num_creature) - 1, 0, -1):
if num_creature[i].live == False:
del num_creature[i]
for i in new_son:
num_creature.append(i)
print(len(num_creature))
sum = 0
for i in num_creature:
sum = sum + i.getPreferTemp()
sum = sum / len(num_creature)
print(sum)
运行效果:
- 通过每一次循环,可以看出每次的温度的变化和资源的消耗,对种族个体数量的影响,同时输出数量的变化;
- 计算个体最适宜生存的温度,统计整个种族的最佳生存温度;
- 可以看到种族适宜的温度在提升,说明种族的适宜温度逐渐升高;
个别细节:
- 初始化的温度,低温的设置,可以随机数,但是低温的,就要利用好前面高温的设置;
- 如何实例化?在函数里居然可以直接实例化作为传入函数的参数,之前我是不懂的;
- 对列表进行的操作,包括索引,之前都是没有应用过的;
- 索引作为参数传入函数,第一次用;
- bool型的变量,我是第一次用;
- 方法Method的使用,是在变量前面,还是在变量后面,我是混淆的;
- 真是连个循环都写不明白的,for i in range(怎么写),我是脱离不了百度独立完成的;
希望疫情没事,也能趁机编程入门,学到点真东西在身上
|