为什么这个while循环不在if语句下执行?

2024-05-12 23:02:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python和stackoverflow的新手。我试着通过做一些小项目来学习

项目涉及人口:2014年中国人口约13.7亿,以每年0.51%的速度增长。2014年,印度人口约为12.6亿,并以每年1.35%的速度增长。确定印度人口何时超过中国人口。假设2014年的增长率将继续

我使用的代码是:

year = 2014
population_chn = eval(input("Enter the initial China population:")) #1.37
population_ind = eval(input("Enter the initial Indian population:")) #1.26
while population_chn == 1.37:
    population_chn += 0.0051*population_chn
    year +=1
while population_ind == 1.26:
    population_ind += 0.0135*population_ind
    year +=1
if population_ind>population_chn:
    print("Indian population will exceed china population in",year)

但是,运行此命令时没有输出。我错过了什么? 我想要的结果是

India's population will exceed China's population in the year 2025.


Tags: the项目inputevalyear速度initialindian
3条回答

在while循环中,您检查的是population chn是否等于1.37,这可能对第一种情况有效,但对于while循环的任何后续迭代都不起作用,因为population_chn += 0.0051*population_chn更改了它的值。人口工业也是如此。 相反,您应该在while循环中比较population\u chn和population\u ind的值,并且只使用一个循环

while (population_chn>=population_ind):
    population_chn += 0.0051*population_chn
    population_ind += 0.0135*population_ind
    year +=1

在while循环之前不需要if语句。您可以将所有这些逻辑放入while循环中,并按如下方式更新每年的总体参数:

year = 2014
print("Enter the initial China population:")
population_chn  = eval(input())
print("Enter the initial Indian population:")
population_ind = eval(input())

while population_ind < population_chn:
    population_chn += 0.0051*population_chn
    population_ind += 0.0135*population_ind
    year +=1 
else:
    print("Indian population will exceed china population in", (year))

Chn人口为1.37,ind人口为1.24:

Indian population will exceed china population in 2025

if语句从不执行的原因是while语句只在填充等于初始输入时执行。看看这些线条:

while population_chn == 1.37:
    population_chn += 0.0051*population_chn
    year +=1
while population_ind == 1.26:
    population_ind += 0.0135*population_ind
    year +=1

它们只会更新一次,因为在1次迭代之后,if语句不再是真的,并且填充在之后再也不会更新。因此,印度人口总是少于中国人口,所以这句话永远不会被执行。你知道吗

在你的情况下,人口指数永远不会比人口指数更高,这就是为什么你不会打印一些东西

如果您想解决问题,可以尝试:

population_a = 1.37
population_b = 1.26

growing_rate_a = 0.0051
growing_rate_b = 0.0135

year = 2014
while population_a > population_b:
    year += 1
    population_b += population_b * growing_rate_b
    population_a += population_a * growing_rate_a

print(year)

相关问题 更多 >