Python回文判断函数逻辑错误:应返回False却返回True
问题分析与修复
你的代码核心问题出在反转字符串的逻辑错误:当前的while循环是从字符串的第一个字符(索引0)开始,逐个把字符追加到reverse_string中,这其实是完全复制了原字符串,根本没有实现反转。所以不管输入什么字符串,input_string和reverse_string都会相等,自然永远返回True。
修复方案
方案1:修正while循环的索引逻辑
把循环起始索引设为字符串的最后一位,从后往前遍历字符,构建真正的反转字符串:
def is_palindrome(input_string): x = len(input_string) - 1 reverse_string = "" while x >= 0: reverse_string += input_string[x] x -= 1 return input_string == reverse_string
方案2:利用Python切片简化代码
Python的字符串切片[::-1]可以直接生成反转后的字符串,代码更简洁高效:
def is_palindrome(input_string): return input_string == input_string[::-1]
测试修改后的代码:
print(is_palindrome("abc")) # 返回False,符合预期 print(is_palindrome("aba")) # 返回True,正确识别回文
内容的提问来源于stack exchange,提问作者basil vj
相关产品推荐
相关产品推荐

