我的任务是编写一个函数,该函数使用while循环来计算总体从给定初始大小到大于或等于给定最终大小的值所需的天数(多少倍)。
此外,如果最终人口数小于或等于初始人口,答案应为零。
我的方法:
def num_doublings(initial_population, final_population):
days = 0
if final_population <= initial_population:
return 0
else:
while initial_population < final_population:
initial_population * 2
days = days + 1
return days
测试:
ans = num_doublings(1, 8)
print(ans)
当我按下回车键时,它会告诉我&#34;执行命令。请等待结果。&#34; 并且我不认为它会返回一些东西,所以我只是停止运行代码。
那么我做错了什么?
答案 0 :(得分:1)
您正在调用initial_population * 2
,不修改就地变量。而是尝试:
initial_population *= 2
相当于:
initial_population = initial_population*2
最终守则:
def num_doublings(initial_population, final_population):
days = 0
if final_population <= initial_population:
return 0
else:
while initial_population < final_population:
initial_population *= 2 #Right here
days += 1 #Also changed this to be more concise
return days
为什么会出现这个问题:
您正在测试if x < y
,如果x
确实小于y
,并且您没有修改x
或y
,那么您的同时循环将无限期地运行。