运行一个循环以返回大于15的值



我需要运行一个循环,该循环将使初始值一倍,直到它大于15。这是我到目前为止的代码。

def while1(initial):
    total = 1
    while initial < 15:
        total = initial * 2
    return total

print while1(3)  # -> 24
print while1(2)  # -> 16
print while1(15)  # -> 15

它没有返回我想要的值。

initial永远不会更改,因此您的时循环永不退出,使用total作为条件变量:

def while1(initial):
    total = initial
    while total < 15:
        total = total * 2
    return total

您拥有的代码会不断检查initial是否小于15,但更改总数,而不是初始。Python具有一个不错的"命令" *=,可用于将变量乘以某个数字,然后将答案保存在变量中。您可以按以下方式使用它:

def while1(initial):
    while initial < 16: #Are we done yet? (Remember to run when initial is equal to 15)
        initial *= 2 #Double initial
    return initial #This will only run when initial is greater than 15

希望这会有所帮助!

只是为了娱乐,您可以直接计算结果,而无需任何循环:

import math
def double_until_greater_than_15(x):
    return x * 2**math.ceil(max(math.log2(16 / x), 0))
print(double_until_greater_than_15(3)) # 24
print(double_until_greater_than_15(2)) # 16
print(double_until_greater_than_15(15)) # 30

最新更新