2017-03-01 61 views
-3

我的程序應該採用2的輸入和輸出冪。例如輸入8和輸出1,2,4,8,16,32,65,128。但是,不是做8個整數並輸出每個* 2,它只會到達8號時才停止。我不想使用**運算符。2 while while循環的權力

limit=input('Enter a value for limit') 
limit =int(limit) 
ctr=1 
while ctr <= (limit): 
    print(ctr, end=' ') 
    ctr=ctr*2 
print("limit=", limit) 

回答

0

ctr是值,而不是您執行操作的次數。使用range代替,並且爲了清楚使用更合適的變量名:

limit = input('Enter a value for limit: ') 
limit = int(limit) 
result = 1 
for _ in range(limit): 
    print(result, end=' ') 
    result *= 2 

print() 
print(f"limit={limit}") 

結果:

Enter a value for limit: 8 
1 2 4 8 16 32 64 128 
limit=8 

您可以模擬for環和rangewhile循環如下,雖然我不會推薦它:

ctr = 0 
while ctr < limit: 
    print(result, end=' ') 
    result *= 2 
    ctr += 1 
+0

我在做什麼,它需要在一個while循環。儘管是更好的方式去實現它 –

+0

@Mo_The_User - 你當然可以用'while'循環來做到這一點,但是對於_範圍(n):''是正常的做法。 – TigerhawkT3

1

@ tigerhawkt3的答案是最好的,但如果你想要一個while循環你可以這樣做:

limit = input('Enter a value for limit') 
limit = int(limit) 
ctr = 1 
i = 0 

while i < (limit): 
    print(ctr, end=' ') 
    ctr *= 2 
    i += 1 

print("limit=", limit) 
+0

這正是我正在尋找的。然而,如果我要投入8,它會停在256而不是128? –

+0

將'<='替換爲'<'。 –