我的程序应该接受输入,然后将每个数字乘以2,直到达到输入数字。例如,如果输入的数字是8,则输出1,2,4,8,16,32,64,128。我的代码停在8号而不是128号。尚未解决
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 :(得分:0)
您将ctr
乘以2,但将其与8进行比较,因此它从1到2变为4,再变为8,然后停止。
我不确定为什么你想在没有**运算符的情况下这样做,但在这种情况下你可能需要考虑跟踪计数器(从1到8)和值(从1到128)作为两个独立的变量。
答案 1 :(得分:0)
再次查看while
条件:您的循环将一直运行,直到您的产品到达用户的输入。在您的示例中,limit
将设置为8,当ctr
达到8时,您的循环将结束。在这里,我将为您的代码添加一些注释,也许您可以看到问题出在哪里遇到的是:
limit = input('Enter a value for limit: ')
limit = int(limit) # Getting input from the user. If the user enters n,
# the program should output powers of 2 up to 2^n
ctr = 1 # Initializing the variable holding the powers of 2
while ctr <= (limit): # While the power of 2 is less than n (This line is
# where your problem is. Your loop ends when the
# power of 2 reaches n, not 2^n)
print(ctr, end=' ') # Print the power of 2
ctr = ctr * 2 # Double the power of 2 to get the next one
print("limit =", limit ) # Print the number the user put in
要解决此问题,请为循环计数器和产品使用单独的变量,或者更好地使用for循环:
for i in range(limit):
ctr *= 2
答案 2 :(得分:0)
你的while循环在达到8时停止,如你的条件所示。
while ctr <=(limit)
您可以使用以下代码简单地达到结果。
l = int(input())
n = 1
while l>0:
print(n)
n *= 2
l -= 1
我希望这可以回答查询。