Python中负整数传入时反转函数返回None而非整数的问题排查
整数反转函数负整数输入返回None的问题分析与修复
问题点拆解
负整数分支无后续逻辑
当输入x < 0时,你的代码只执行了a = -1 * x就跳出了if块,没有做反转、溢出判断和return操作,函数没有返回值,自然输出None。正数分支返回逻辑错误
在x >= 0的分支里,满足条件时你返回的是-1*b,这会把正数反转结果变成负数,完全不符合预期。溢出判断边界不完整
整数反转的合法范围应该是[-2^31, 2^31 - 1],你只判断了小于2^31 -1,没有处理负数反转后的下限判断。冗余代码
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
相关产品推荐
相关产品推荐

