我正在尝试计算印度人口超过中国的时间。我的while循环只执行第一次迭代。
我尝试将while循环设置为在循环本身内执行,相反,它变成了无限循环。我也尝试在循环内外缩进print
语句。
China=1.415
Cgrowth=.39
India=1.354
Igrowth=1.11
count=0
while India<China :
China += Cgrowth*China
India += Igrowth*India
count += 1
print(count)
我的输出始终以1结尾。
我进行了数学运算,即使在一个循环之后该语句仍然是正确的,那么为什么在循环条件为假的情况下print(count)
被删除?我也尝试过India*=Igrowth
,但是所有循环仍然只在第一次运行。
答案 0 :(得分:1)
在第一个循环中,中国= 1.415,印度= 1.354,因此条件将验证为True并运行循环。这将启动以下对印度和中国变量的重新计算。
China = 1.415 + .39*1.415
China = 1.415 + .55185
China = 1.96685
India = 1.354 + 1.11*1.354
India = 1.354 + 1.50294
India = 2.85694
因此,在第二个循环中,China = 1.96685&India = 2.85694,因此该条件将不会验证为True,并且将在第一个循环(即1)之后返回计数。
答案 1 :(得分:0)
GIGO。
垃圾进入。垃圾了。
China=1.415
Cgrowth=.39
India=1.354
Igrowth=1.11
China += Cgrowth*China # = 1.966
India += Igrowth*India # = 2.85
因此,经过一次迭代,印度不少于中国。
一些基本的调试-像在循环末尾打印所有值一样,将比在此处发布快很多。
我的猜测是增长值应该是百分比,而人口值应该是十亿?您似乎没有考虑任何单位等。
答案 2 :(得分:-1)
India = 8
China = 15
Igrowth = 0.1
Cgrowth= 0.05
count = 0
while India<China :
China += Cgrowth*China
India += Igrowth*India
count += 1
print(India, China, count)
此代码打印30.379986686659283 29.698973991590965 14
在您的代码中
China=1.415
Cgrowth=.39
India=1.354
Igrowth=1.11
第一次循环后 中国将为1.96685(1.415 + 1.415 * 0.39) 印度将是2.85694(1.354 + 1.354 * 1.11)