我需要运行一个循环,将初始值加倍,直到它大于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
它没有返回我想要的值。
答案 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