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