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

Python使用除法判断数字是否为回文数 逻辑正确却运行出错求助

Python数字回文校验代码错误修复

现存错误点

  • 参数覆盖问题:isPalindrome方法本身已设计为接收入参x,但方法内第一行用input获取的用户输入直接覆盖了入参,导致函数传参失效,不符合你设定的「用户输入作为函数调用参数」的实现需求
  • 原始值丢失问题:循环过程中你不断对x做整除10的操作,循环结束后x的值已经被修改为0,此时拿已经变为0的x和反转后的rev做比较,逻辑完全错误,需要提前存储原始输入值用于最终对比
  • 缩进错误:实例化Solution类、调用校验方法的代码错误缩进在类定义内部,不属于全局可执行代码,运行时会直接报错
  • 未定义变量调用:全局作用域下没有提前定义变量x,就直接调用sol.isPalindrome(x),会触发变量未定义的报错

修正后代码

class Solution:
    def isPalindrome(self, x: int) -> bool:
        # 提前保存原始输入值,避免循环修改后丢失
        original_x = x
        rev = 0
        # 负数直接不是回文,提前判断减少计算
        if x < 0:
            return False
        while x > 0:
            temp = x % 10
            rev = rev * 10 + temp
            x = x // 10
        return original_x == rev

# 类定义外执行实例化、传参调用
if __name__ == "__main__":
    # 把用户输入作为参数传入函数
    input_num = int(input("Enter The number"))
    sol = Solution()
    a = sol.isPalindrome(input_num)
    print(a)

核心改动说明

  • 移除了函数内部的input逻辑,把用户输入移到函数调用前,符合「用户输入作为函数参数」的要求
  • 新增original_x变量存储原始输入值,循环结束后用原始值和反转结果做对比
  • 调整了实例化、调用逻辑的缩进,移到类定义外部,作为全局执行代码
  • 新增负数提前判断逻辑,覆盖负数校验的边缘场景
  • 简化了返回值写法,直接返回original_x == rev的布尔结果,无需额外的if判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:36:02