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

判断数字是否为2的幂的Python代码报错求助

判断数字是否为2的幂的Python代码问题修复

你的代码存在几个关键错误,导致语法报错和逻辑异常,逐一修正如下:

错误点梳理

  • 语法错误:Python中不等于运算符是!=(而非!==),逻辑与用and(而非&&),这是循环条件报错的直接原因
  • 循环逻辑错误:原循环条件写反了——应该是当数字能被2整除(number % 2 == 0)且不为0时,才持续除以2,原条件会导致不符合预期的循环执行
  • 语法缺失:else语句末尾缺少冒号:,违反Python语法规则
  • 除法类型问题:使用普通除法/会得到浮点数(如8/2=4.0),后续判断number == 1会失效,需用整数除法//
  • 边界处理缺失:未提前处理0和负数的情况,虽然原代码能返回False,但提前判断更高效清晰

修复后的代码

def is_power_of_two(number):
    # 2的幂是正整数,直接排除非正数情况
    if number <= 0:
        return False
    # 当数字可被2整除时,持续整除2
    while number % 2 == 0:
        number = number // 2
    # 最终结果为1则是2的幂
    return number == 1

print(is_power_of_two(0)) # Should be False
print(is_power_of_two(1)) # Should be True
print(is_power_of_two(8)) # Should be True
print(is_power_of_two(9)) # Should be False

代码说明

  • 提前过滤非正数,避免无效循环
  • 修正运算符和循环条件,解决语法错误同时保证逻辑正确
  • 整数除法确保数值始终为整数,避免浮点数判断偏差
  • 简化最终判断逻辑,直接返回比较结果,代码更简洁

内容的提问来源于stack exchange,提问作者Faiza Ishaq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:37:40