提问人:Anna 提问时间:6/21/2023 更新时间:6/21/2023 访问量:77
两个非常相似的 for 循环具有不同输出
two very similar for loops with different ouputs
问:
我必须解决一个种群问题(动物):
如果存在狐狸,兔子种群(猎物)的每日变化将 BE:0.05 兔子-0.0002狐狸*兔子。模拟假设的情况,即 狐狸种群不会改变,始终为 100。兔子会怎么 如果以 1000 开头,则人口在 10 天后?你的程序应该可以工作 用浮点数不四舍五入,除了最终答案,即 向下舍入为整数。
我用不同的输出编码了不同的代码。我不明白,为什么有不同的输出。
我尝试了以下代码:
code1 - 错误的输出
day=10
fox=100
rabbit=1000
change_rabbit = 0.05 * rabbit -0.0002*fox*rabbit
for i in range(day):
rabbit+= change_rabbit
print(int(rabbit))`
code2 - 右输出
day=10
fox=100
rabbit=1000
increase_rabbit=0.05
change_rabbit = increase_rabbit * rabbit -0.0002* fox *rabbit
for i in range(day):
rabbit+= increase_rabbit * rabbit -0.0002* fox *rabbit
print(int(rabbit))`
答:
1赞
UnquoteQuote
6/21/2023
#1
在第一个代码中,在进入循环之前进行计算。
在排队中change_rabbit
change_rabbit = increase_rabbit * rabbit -0.0002* fox *rabbit
将值赋给内存中的变量。
然后,每次在循环中调用时,变量都会增加存储在内存中的变量值,即 。4999999
change_rabbit
rabbit+= change_rabbit
rabbit
change_rabbit
4999999
第二个代码是您要执行的操作:根据上一次迭代中的值计算新值。您不能直接使用,因为它已经计算出来,并且不会考虑变量的变化。如果你想避免代码重复,你可以为 定义一个函数,以当前的兔子数量作为参数。rabbit
rabbit
change_rabbit
rabbit
change_rabbit
评论
change_rabbit
rabbit += ...
change_rabbit
rabbit
rabbit
change_rabbit
rabbit
rabbit += 0.05 * rabbit - 0.0002 * fox * rabbit
change_rabbit