使用 while 循环来计算两个数字之间发生了多少次加倍
using while loop to count how many doublings happen between two numbers
我的任务是编写一个函数,该函数使用 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)
当我按下回车键时,它告诉我 "executing command. please wait for results."
而且我不认为它会 return 什么所以我只是停止使用 运行.
中的代码
所以我做错了什么?
您正在调用 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
,您的 while 循环将无限期地 运行。
我的任务是编写一个函数,该函数使用 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)
当我按下回车键时,它告诉我 "executing command. please wait for results." 而且我不认为它会 return 什么所以我只是停止使用 运行.
中的代码所以我做错了什么?
您正在调用 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
,您的 while 循环将无限期地 运行。