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