def main():
wolf = int(input("Enter wolf population (initial): "))
rabbit = int(input("Enter rabbit population (initial): "))
grass = float(input("Enter total grass area, initially fertile (in sq yards): "))
wolf_growth = float(input("Enter wolf growth rate (in percentage): "))
rabbit_growth = float(input("Enter rabbit annual growth rate (in percentage): "))
area_growth = float(input("Enter grass area annual growth rate (in percentage): "))
for year in range(0,21):
wolf = wolf * (1 + wolf_growth / 100)
print()
print("Year Wolf Population Rabbit Population Available Grass Area")
print("%-2d%6d%19d%22.2f" %(year, wolf, rabbit,grass))
main()
这是我的代码,并且有效。但是我需要帮助来弄清楚如何根据其他计算正确完成编码。 “狼的人口每年以特定的增长率增长 用户输入。除此之外,每5年狼的数量减少到以前的一半 年人口由于广泛的流行病。考虑到最初的狼数量, 计算每年的狼数量(提示:使用模运算符进行计算 疾病扩散时期的人口)。每年,狼的数量需要更新 根据其增长率如下。此外,除第一年(即仅在6,11,16年)外,每5年一次,狼种群 必须是前一年狼族人口的一半”
我尝试对此部分使用嵌套的for循环,但无法使其正常工作。
非常感谢您!
答案 0 :(得分:1)
您不需要嵌套循环-您只需要在循环中放入if
条语句即可:
for year in range(0,21):
# wolf population grows annually. You already did this part.
wolf = wolf * (1 + wolf_growth / 100)
# every 5 years, except the first year
if (year % 5 == 0) and (year != 0):
# wolf population decreases to half of the previous year population
wolf /= 2
print()
print("Year Wolf Population Rabbit Population Available Grass
Area")
print("%-2d%6d%19d%22.2f" %(year, wolf, rabbit,grass))
您可以看到只有在wolf /= 2
被year
整除的情况下,行5
才被激活(这就是%
或'modulo'运算符的作用-如果将year
除以5
后的余数为0
,则year
被5
整除,并且不等于{{ 1}}(所以不是第一年)。不确定这是否能完全满足您的要求-您在问题中发布的内容有点令人困惑-但这应该很容易适应您的用例。