2017-03-01 9 views
-3

私のプログラムは、2の入力と出力を取ると仮定しています。例えば、8を入力し、1,2,4,8,16,32,65,128を出力します。しかし、8個の整数を出力して各* 2を出力するのではなく、8個の整数に達して停止するだけです。私は**演算子を使いたくありません。2のべき乗と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は、操作を実行した回数ではなく、値です。

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 

あなたは、whileループとforループとrangeをエミュレートすることができます代わりにrangeを使用し、明確にするため、より適切な変数名を使用それ:

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

私がしていることについては、whileループにする必要があります。 –

+0

@Mo_The_User - あなたは間違いなくwhileループでそれを行うことができますが、for _ in range(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に入れたら、128ではなく256で停止するのでしょうか? –

+0

'<='を '<'に置き換えます。 –

関連する問題