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

时间:2019-02-13 18:50:16

标签: python function if-statement while-loop

我是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)

但是,运行此命令时没有输出。我想念什么? 我想要的输出是

  

到2025年,印度的人口将超过中国的人口。

3 个答案:

答案 0 :(得分:0)

在您的情况下,种群人口永远不会磨碎,然后种群人口会因此而不再打印

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

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)

答案 1 :(得分:0)

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

Indian population will exceed china population in 2025

使用Chn人口的1.37和ind人口的1.24的输出:

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语句从不执行的原因是,while语句仅在填充等于初始输入时才执行。看这些行:

{{1}}

它们只会更新一次,因为经过1次迭代后,您的if语句不再成立,并且填充永远不会更新。因此,印度人口总是少于中国人口,因此该声明从未执行。

答案 2 :(得分:0)

在while循环中,您正在检查是否与Population_chn的1.37相等,这对于第一种情况可能是有效的,因为population_chn += 0.0051*population_chn会更改其值,因此不适用于while循环的任何后续迭代。人口_情况也是如此。 相反,您应该在while循环中比较种群_chn和种群_ind的值,并且仅使用一个循环

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