Python 继续按整数除法减半,直到x=1

Python 继续按整数除法减半,直到x=1,python,integer,division,Python,Integer,Division,函数是取一个正整数n,然后除以2(使用整数除法),直到它达到1。输出应该是该值除以的次数。到目前为止,我的代码是 def keep_halving(x): i=1 for i in range(x): if x//2==0: return i 函数应该如何运行的示例如下 >>>keep_halving(4) 2 你可以试试这个: n = int(input("enter number")) while n > 1:

函数是取一个正整数n,然后除以2(使用整数除法),直到它达到1。输出应该是该值除以的次数。到目前为止,我的代码是

def keep_halving(x):
    i=1
    for i in range(x):
        if x//2==0:
           return i
函数应该如何运行的示例如下

>>>keep_halving(4)
2
你可以试试这个:

n = int(input("enter number"))
while n > 1:
    n //= 2
    print (n)
输入:
128

输出:

enter number128
64
32
16
8
4
2
1
这将使用
while
循环连续除以2,并在
n
达到1时停止

编辑:我读你的问题太快了。更新代码如下:

count = 0
n = int(input("enter number"))
while n > 1:
    n //= 2
    print (n)
    count +=1
print (count)
每次将
n
除以二时,这将在
count
上加一

输入:
128

输出:

enter number128
64
32
16
8
4
2
1
7

那么你到底遇到了什么问题?顺便说一句,这段代码中有很多错误。事实上,这完全是错误的。您是否尝试过一步一步地运行它并查看发生了什么(这是一项活动,也称为调试您的代码)?而且每次您的条件通过时,您都会返回1,这绝对是您不想做的。for循环中的
i
是范围内的每个值。
i=1
没有任何效果。@barak manos:我想如果你告诉Mihai Stefanescu他的代码到底出了什么问题,为什么以及如何改进代码以实现他的目标(这项活动也称为建设性批评)@Ukimiku:Haha,最后一句话+1:)哦,我不知道这里可以使用while循环。非常感谢您没有问题-为最初不理解您的代码而道歉。实际上,我正在为二进制转换器制作类似的东西。将十进制数转换为二进制数的算法之一是不断除以2并记下余数。我只是没有在答案的代码中包含您留下的打印(n)。它按预期运行。非常感谢您的帮助是的,
print(n)
是不需要的,但我总是发现这样做或类似的做法是很好的,以确保
n
实际上被每个循环除以2。没问题,当然可以。这是一个简单的证明,证明函数确实在按它应该的方式工作。