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

Python回文检测函数问题求助:判断'loll'返回True而非False

回文字符串函数问题分析与修复

你的两段palindrome函数存在同一个致命问题:循环仅执行第一次迭代就直接返回结果,导致无法完成完整的回文判断。

以palindrome('loll')为例:

  • 第一次循环i=0,比较s[0]('l')和s[-1]('l'),结果为True,函数直接返回True,完全没检查后续字符
  • 实际上当i=1时,s[1]是'o',s[-2]是'l',二者不相等,此时才应该返回False

除此之外,代码还有几个冗余问题:

  • 循环遍历了整个字符串长度,其实只需要遍历到字符串的一半即可,因为前后对称的字符无需重复比较
  • break语句永远不会执行,因为return会直接终止函数
  • 没必要将比较结果赋值给变量x再判断,直接使用比较表达式更简洁

修复后的代码

def palindrome(s):
    # 只遍历字符串前半部分,避免重复比较
    for i in range(len(s) // 2):
        # 只要发现一对对称字符不相等,直接返回False
        if s[i] != s[-1 - i]:
            return False
    # 所有对称字符都匹配,返回True
    return True

测试验证

palindrome('loll')  # 返回False,符合预期
palindrome('level') # 返回True,判断正确

内容的提问来源于stack exchange,提问作者Sai Darsan K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:15:54