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

时间:2017-05-31 21:23:53

标签: python loops while-loop

我需要运行一个循环,将初始值加倍,直到它大于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

它没有返回我想要的值。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

你在那里的代码不断检查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

希望这有帮助!

答案 2 :(得分:0)

只是为了好玩,你可以直接计算结果,没有任何循环:

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