You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算数字减半至1的次数?Python代码报错求助

问题分析与修复

原代码的核心问题

  • range(n, 1) 无效:Python的range(start, stop)默认步长为1,当start > stop时生成空序列,循环根本不会执行。
  • 循环变量误用:for循环会自动重置i的值,手动i+=1完全起不到计数作用。
  • 提前返回:return i写在循环内部,即便循环执行,第一次迭代就会直接退出,无法完成多次操作的计数。
  • 逻辑偏离需求:代码没有对输入的n执行持续减半操作,反而错误操作循环变量,完全不符合功能要求。

修复后的代码

循环实现(直观易懂)

def halve(n):
    count = 0
    current = n
    # 当前值大于1时,持续减半并计数
    while current > 1:
        current = current / 2
        count += 1
    return count

测试验证:

print(halve(4))  # 输出2
print(halve(11)) # 输出3

数学公式实现(高效简洁)

利用对数计算,每次减半等价于除以2,操作次数等于以2为底n的对数的整数部分:

import math

def halve(n):
    return math.floor(math.log2(n))

该实现同样满足需求:log2(4)=2,log2(11)≈3.459,取整后为3。

内容的提问来源于stack exchange,提问作者Adam Cora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:11:16