判断数字是否为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
相关产品推荐
相关产品推荐

