计算在达到1之前一个数字减半的次数

时间:2013-04-24 20:04:47

标签: python

问题是编写一个函数,告诉在达到1之前'n'可以减半的次数。我一直在努力使这个代码工作,但它不起作用。我以为我有这个,但当我尝试用神秘(4)或其他任何东西来测试时,它会永远返回0。有人能告诉我需要修理什么。这就是我所拥有的:

def mystery(n):
    count = 0
    while n > 0
      if n//2 > 1:
         count = count + 1
    print (count)

4 个答案:

答案 0 :(得分:2)

问题是你没有修改n的值。尝试:

def mystery(n):
    count = 0
    while n > 1:
        n = n // 2
        count += 1
    return count

(未测试的)

答案 1 :(得分:2)

对不起是一个聪明人;)

from math import log, ceil
def mystery(n):
  return ceil(log(n, 2))

答案 2 :(得分:0)

一旦您修复了已经完成的注释,您的代码将永远运行的原因是您拥有while n>0。由于每次迭代都按n/2更新,因此永远不会消极!

答案 3 :(得分:0)

def mystery (n):
    count = 0
    while n > 1:
        n = n / 2
        count = count + 1
    if n == 1:
        return count
    return 0