我一直在尝试创建这种对“生命”的模拟(深受初级视频的启发),但当程序遍历包含所有现有生物的类变量时,我的类“生物”的一些实例似乎跳过了检查“if”语句,而其他实例则没有
整个想法是让生物在给定的迭代中“死亡”,因为“生物”的当前“死亡率”设置为1.0-->;100%,但不是这样,每次只有在类变量'bioters'的奇数指数处的生物真正'死亡'
import random as rnd
class Creature(object):
creatures = []
counter = 0
birth_rate = 1.0
death_rate = 1.0
def __init__(self):
self.c_id = "c_" + str(Creature.counter) #creature id
Creature.counter += 1
def try_die(self):
temp = rnd.randint(1, 100)
if temp < Creature.death_rate * 100:
Creature.creatures.remove(self)
for i in range(10):
Creature.creatures.append(Creature())
iteration = 1
while len(Creature.creatures) > 0:
for creature in Creature.creatures:
if iteration % 2 == 0:
creature.try_die()
print("ITERATION: {}|ALIVE: {}".format(iteration, len(Creature.creatures)))
iteration += 1
我希望程序在第二次迭代结束,因为死亡率是1.0,每第二次迭代死亡一次,但实际上有10个生物总是在第八次迭代时死亡。具有以下输出:
迭代:1 |活动:10
迭代:2 |活动:5
迭代:3 |活动:5
迭代:4 |活动:2
迭代:5 |活动:2
迭代:6 |活动:1
迭代:7 |活动:1
迭代:8 |活动:0
节目结束了
目前没有回答
相关问题 更多 >
编程相关推荐