Python 计算一个数字在达到1之前可以减半多少次
问题是写一个函数,告诉在达到1之前“n”可以减半多少次。我一直在努力使这个代码工作,但它不工作。我以为这一个我有它,但当我尝试用神秘(4)或其他任何东西来测试它时,它总是返回0。有人能告诉我什么需要修理吗。以下是我所拥有的:Python 计算一个数字在达到1之前可以减半多少次,python,Python,问题是写一个函数,告诉在达到1之前“n”可以减半多少次。我一直在努力使这个代码工作,但它不工作。我以为这一个我有它,但当我尝试用神秘(4)或其他任何东西来测试它时,它总是返回0。有人能告诉我什么需要修理吗。以下是我所拥有的: def mystery(n): count = 0 while n > 0 if n//2 > 1: count = count + 1 print (count) 问题是您没有修改n的值。尝试: def
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
(未经测试)对不起,我是个聪明人;)
一旦您修复了已经做出的注释,您的代码将永远运行的原因是您有一个
,而n>0
。因为每次迭代都是通过n/2
更新的,所以这永远不会是负面的 它不会返回0
,每次都返回None
。因为您没有return
语句。中的math.log
解决方案有什么问题吗?事实上,请注意,它甚至无法编译,因为(至少)缺少冒号。如果你解决了这个问题,它将在一个无限循环中运行,因为你从不在任何地方修改n
。因此,如果你想问我们为什么你的代码总是返回0,你必须向我们展示总是返回0的代码,而不是完全不同的代码。你可以使用math.log(n,2)@Yossi,是的,我正准备这么做。这需要我使用一个while循环,我不知道如何做到这一点并让它工作?我更喜欢这种方式,而不是我自己的答案+1。我很惊讶人们甚至在考虑其他解决方案。这是个骗人的问题!
def mystery (n):
count = 0
while n > 1:
n = n / 2
count = count + 1
if n == 1:
return count
return 0
def mystery (n):
count = 0
while n > 1:
n = n / 2
count = count + 1
if n == 1:
return count
return 0