Python字符串回文判断代码异常:回文字符串被误判为非回文
Python回文字符串判断代码问题排查与修复
问题描述
- 输入回文字符串(如
ama)时,预期输出string is palindrom,实际输出string is not palindrom - 所有输入都会触发else分支,无法正确完成回文判断
测试案例:
| 输入 | 预期输出 |
|---|---|
ama | string is palindrom |
amit | string 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)
问题根源
- 初始化错误:
rev_str = " "初始化时添加了多余空格,导致反转后的字符串始终比原字符串多一个前置空格(例如输入ama,反转后为ama),永远无法与原字符串匹配。 - 缩进错误:
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
相关产品推荐
相关产品推荐

