Skip to main content
 首页 » 编程设计

python之循环不迭代

2025年05月04日18daizhj

我遇到了 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 等设置一个新值。