【发布时间】:2019-07-07 17:04:42
【问题描述】:
我是 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 年超过中国的人口。
【问题讨论】:
-
不要使用
eval()。使用float()将输入转换为数字。 -
运行两个完全独立的循环没有任何意义。如果您要模拟向前迈进的一年,则需要每次同步更改两个总体。现在,您每模拟一年将
year增加两次,并且不能保证您对两个总体中的每一个都执行相同数量的增量。 -
不应该是
<而不是==,例如while population_chn < 1.37: -
每个
while循环最多运行一次,因为您更改了循环中的总体变量,并且只有在您输入这些确切数字时它们才会运行。 -
正如@CharlesDuffy 所说,您应该比较
while population_ind < while population_chn并在循环中增加两者。
标签: python function if-statement while-loop