Python While循环simp

2024-09-29 23:20:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图写一个函数来计算一种细菌从其初始种群到最终种群所需的天数,因为它的数量每天都会翻倍。我的代码是

def num_doublings(initial_population, final_population):
   time = 0
   while initial_population < final_population:
       time+= 1
       initial_population = initial_population * 2
       print(time)

这将每天打印,但我希望它只打印while循环停止所需的总迭代次数。使用num_doublings(2, 8)调用函数时,我的代码的输出是

^{pr2}$

但我只需要它输出3。我怎么解决这个问题?在


Tags: 函数代码数量timedefnuminitialfinal
3条回答

你可以试试这个:

def num_doublings(initial_population, final_population):
    time = 0
    while initial_population <= final_population:
        time+= 1
        initial_population = initial_population * 2

    return time

函数将返回时间变量,在您给出的示例中为3

您只需将print行拉到while循环之外。像这样-

def num_doublings(initial_population, final_population):
   time = 1
   while initial_population < final_population:
       time+= 1
       initial_population = initial_population * 2
   print(time)

注意,我初始化了time =1

正如Martijn Pieters正确地观察到的,性能解决方案根本不使用循环:

from math import log, ceil

def num_doublings(initial, final):
    return ceil(log(final/initial, 2))

相关问题 更多 >

    热门问题