2017-05-31 114 views
0

我需要运行一个循环,它会使初始值加倍,直到它大于15.我无法弄清楚如何让它停止在I值想。这是迄今为止的代码。运行一个循环来返回一个大于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 

它没有返回我想要的值。

+1

所以,你正在检查初始值是否大于15,但是最初存储更大数字的部分在哪里? –

+0

尝试调试您的代码。一种方法是在'while'循环中打印'initial'和'total'的值。 –

回答

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 

希望这有助于!

+0

呃,我太亲近了。感谢您的帮助。 :) –

3

initial永远不会改变,所以你的while循环决不会退却,使用total为条件变量:

def while1(initial): 
    total = initial 
    while total < 15: 
     total = total * 2 
    return total 
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 
相关问题