2017-05-31 75 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