我遇到了 for i in range(x) 循环不迭代的困境。我的程序的目的是模拟狐狸和兔子在岛上相互交流,并在每天之后打印出每只动物的数量。我知道方程式是正确的,我遇到的问题是我的循环在大范围内只运行一次。
我的代码:
def run_simulation():
print()
RABBIT_BIRTH_RATE = 0.01
FOX_BIRTH_RATE = 0.005
INTERACT = 0.00001
SUCCESS = 0.01
x = 0
y = 1
FOXES = eval(input("Enter the initial number of foxes: "))
print()
RABBITS = eval(input("Enter the initial number of rabbit: "))
print()
DAYS = eval(input("Enter the number of days to run the simulation: "))
print()
print("Day\t","Rabbits\t","Foxes\t")
print(0,"\t",RABBITS,"\t","\t",FOXES,"\t")
for i in range(DAYS):
RABBITS_START = round((RABBIT_BIRTH_RATE * RABBITS) - (INTERACT * RABBITS * FOXES))
FOXES_START = round((INTERACT * SUCCESS * RABBITS * FOXES) - (FOX_BIRTH_RATE * FOXES))
y = y + x
print (y,"\t",(RABBITS_START+RABBITS),"\t","\t",(FOXES_START+FOXES),"\t")
run_simulation()
当以 500 只狐狸、10000 只兔子和 1200 天为例运行时,我的输出将如下所示
Day Rabbits Foxes
0 10000 500
1 10050 498
第二行输出重复剩余的 1199 次。任何帮助将不胜感激我无法弄清楚我做错了什么。
您在开头设置了 RABBITS
和 RABBIT_BIRTH_RATE
。然后,在每次循环迭代中,将 RABBITS_START
设置为涉及这两个数字的某个公式。您永远不会更改 RABBITS
或 RABBIT_BIRTH_RATE
或 FOXES
或任何其他值,因此每次运行循环时,您只是在计算再次使用相同的数字进行相同的操作。您需要在每次迭代时更新变量的值 --- 即,为 RABBITS
、FOXES
等设置一个新值。
我是一名优秀的程序员,十分优秀!