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

Python字符串回文判断代码异常:回文字符串被误判为非回文

Python回文字符串判断代码问题排查与修复

问题描述

  • 输入回文字符串(如ama)时,预期输出string is palindrom,实际输出string is not palindrom
  • 所有输入都会触发else分支,无法正确完成回文判断

测试案例:

输入预期输出
amastring is palindrom
amitstring is not palindrom

原代码

def str_rev (input_str):
    print("input_str:", input_str)
    rev_str = " "
        for i in (input_str):
            rev_str = i + rev_str
    print("inp_str:", input_str)    
    print("rev_str:", rev_str)
    if (input_str == rev_str):
        print("string is palindrom")
    else:
        print("string is not palindrom")
    return  rev_str       
        
str = input ("Enter the string:")
print("org string:", str)
final_str= str_rev (str)
print("reverse string:", final_str)

问题根源

  1. 初始化错误:rev_str = " " 初始化时添加了多余空格,导致反转后的字符串始终比原字符串多一个前置空格(例如输入ama,反转后为ama ),永远无法与原字符串匹配。
  2. 缩进错误:for循环的缩进不符合Python语法规范,会直接引发运行错误。

修复后的代码

def str_rev(input_str):
    print("input_str:", input_str)
    rev_str = ""  # 初始化为空字符串,移除多余空格
    for i in input_str:
        rev_str = i + rev_str
    print("inp_str:", input_str)    
    print("rev_str:", rev_str)
    if input_str == rev_str:
        print("string is palindrom")
    else:
        print("string is not palindrom")
    return rev_str       
        
user_input = input("Enter the string:")
print("org string:", user_input)
final_str = str_rev(user_input)
print("reverse string:", final_str)

修复说明

  • 修正rev_str的初始值为"",确保反转后的字符串无多余空格,能与原字符串正确匹配
  • 调整for循环的缩进,符合Python语法要求
  • 将变量名str改为user_input,避免与Python内置类型str冲突(规范优化)

验证结果

  • 输入ama:反转字符串为ama,与原字符串相等,输出string is palindrom,符合预期
  • 输入amit:反转字符串为tima,与原字符串不等,输出string is not palindrom,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:20:27