使用递归实现回文检测的Python代码运行异常求修正
递归实现回文检测代码修正
原代码错误点
- 函数
checkPalindrome定义在无意义的for循环中,重复定义无任何作用 - 递归子串截取逻辑错误:
str[1::-1]是取索引1及之前的字符反转,并未实现「去掉首尾字符后递归校验」的需求,正确截取逻辑应为str[1:-1] - 输入处理逻辑错误:
[input().split() for i in range(T)]会将每行输入拆分为列表,且直接把整个测试用例列表传入检测函数,未逐个处理每个输入字符串 - 未打印函数返回结果,导致运行后看不到检测输出
- 变量名使用了Python内置类型名
str,存在命名冲突风险
修正后可运行代码
def checkPalindrome(input_str): l = len(input_str) if l == 0 or l == 1: return "It is a palindrome" if input_str[0] != input_str[-1]: return "It is not a palindrome" # 截取去掉首尾字符的子串,递归校验 str_new = input_str[1:-1] return checkPalindrome(str_new) T = int(input("Number of test cases: ")) for _ in range(T): test_str = input().strip() res = checkPalindrome(test_str) print(res)
功能验证说明
输入测试用例数量后,逐行输入待检测字符串即可输出对应判断结果,例如输入aba返回「It is a palindrome」,输入abc返回「It is not a palindrome」,符合功能预期。
内容的提问来源于stack exchange,提问作者Shivangi
相关产品推荐
相关产品推荐

