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

Python中负整数传入时反转函数返回None而非整数的问题排查

整数反转函数负整数输入返回None的问题分析与修复

问题点拆解

  1. 负整数分支无后续逻辑
    当输入x < 0时,你的代码只执行了a = -1 * x就跳出了if块,没有做反转、溢出判断和return操作,函数没有返回值,自然输出None。

  2. 正数分支返回逻辑错误
    在x >= 0的分支里,满足条件时你返回的是-1*b,这会把正数反转结果变成负数,完全不符合预期。

  3. 溢出判断边界不完整
    整数反转的合法范围应该是[-2^31, 2^31 - 1],你只判断了小于2^31 -1,没有处理负数反转后的下限判断。

  4. 冗余代码
    self.c = x这个变量在后续逻辑里完全没用到,属于无效代码,可以删除。

修正后的代码

class Solution(object):
    def reverse(self, x):
        # 记录输入的符号
        sign = -1 if x < 0 else 1
        # 取绝对值后转字符串反转,再转回整数
        reversed_num = sign * int(str(abs(x))[::-1])
        
        # 判断是否在32位有符号整数范围内
        if -2**31 <= reversed_num <= 2**31 - 1:
            return reversed_num
        else:
            return 0

s = Solution()
print(s.reverse(-1534))  # 输出 -4351

代码说明

  • 用sign变量统一记录符号,避免拆分正负分支导致的逻辑遗漏,简化反转流程。
  • 反转后直接恢复符号,再做合法范围判断,符合题目对32位整数的限制要求。
  • 逻辑更简洁清晰,解决了原代码中分支混乱、返回值缺失的问题。

内容的提问来源于stack exchange,提问作者Narayana Reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:25:09