-3

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

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

4 回答 4

2

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

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

(未经测试)

于 2013-04-24T20:07:54.100 回答
2

对不起,我是个聪明人;)

from math import log, ceil
def mystery(n):
  return ceil(log(n, 2))
于 2013-04-24T20:08:56.697 回答
0

一旦你修复了已经做出的评论,你的代码将永远运行的原因是你有一个while n>0. 由于您通过n/2此更新的每次迭代都不会是负数!

于 2013-04-24T20:11:39.910 回答
0
def mystery (n):
    count = 0
    while n > 1:
        n = n / 2
        count = count + 1
    if n == 1:
        return count
    return 0
于 2013-04-24T20:13:00.320 回答