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

Python回文数判断代码错误求助:输入660输出结果不符

问题分析与修正方案

你的代码存在两个关键问题,导致输入660时输出错误:

  1. 逻辑判断错误:原条件if x < 0 and x%10 == 0)使用了and,这只会在同时满足"负数"和"末尾为0"的情况才返回False,但实际上:

    • 所有负数都不是回文数
    • 末尾为0的数(除了0本身),首位不可能为0,因此也不是回文数
      正确逻辑应该用or连接,同时排除x=0的特殊情况。
  2. 语法错误:条件末尾多了一个右括号),会直接导致代码运行报错。

修正后的代码

class Solution:
    def isPalindrome(self, x: int) -> bool:
        # 若x为负数,或x末尾为0且x不是0,则不是回文数
        if x < 0 or (x % 10 == 0 and x != 0):   
            return False

        reversedNum = 0
        while x > reversedNum:
            reversedNum = reversedNum * 10 + x % 10
            x = x // 10

        # 偶数位时x等于reversedNum;奇数位时x等于reversedNum//10(舍弃中间位)
        return x == reversedNum or x == reversedNum // 10

关键修正说明

  • 调整条件为x < 0 or (x % 10 == 0 and x != 0):覆盖了所有非回文数的前置情况,比如660会触发x%10 ==0 and x!=0,直接返回False。
  • 移除了多余的右括号,修复语法错误。
  • 简化了返回语句,直接返回布尔表达式结果,更简洁。

测试输入660时,代码会直接进入前置条件判断,返回False,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:40:36