2017-03-01 35 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

将'<='替换为'<'。 –