问题是编写一个函数,告诉在达到 1 之前 'n' 可以减半的次数。我一直在努力使这段代码工作,但它不起作用。我以为我有这个,但是当我尝试用神秘(4)或其他任何东西测试它时,它总是返回 0。有人可以告诉我需要修复什么。这是我所拥有的:
def mystery(n):
count = 0
while n > 0
if n//2 > 1:
count = count + 1
print (count)
问题是编写一个函数,告诉在达到 1 之前 'n' 可以减半的次数。我一直在努力使这段代码工作,但它不起作用。我以为我有这个,但是当我尝试用神秘(4)或其他任何东西测试它时,它总是返回 0。有人可以告诉我需要修复什么。这是我所拥有的:
def mystery(n):
count = 0
while n > 0
if n//2 > 1:
count = count + 1
print (count)
问题是您没有修改 n 的值。尝试:
def mystery(n):
count = 0
while n > 1:
n = n // 2
count += 1
return count
(未经测试)
对不起,我是个聪明人;)
from math import log, ceil
def mystery(n):
return ceil(log(n, 2))
一旦你修复了已经做出的评论,你的代码将永远运行的原因是你有一个while n>0
. 由于您通过n/2
此更新的每次迭代都不会是负数!
def mystery (n):
count = 0
while n > 1:
n = n / 2
count = count + 1
if n == 1:
return count
return 0