Python函数问题:筛选偶长回文字符串结果异常排查
问题排查与修复:筛选偶长度回文字符串
错误点分析
is_palindrome函数返回值设计错误
原函数中,字符串是回文时返回原字符串,非回文时返回空元组()。这导致后续判断len(is_palindrome(sample))%2==0时,非回文字符串对应的返回值长度为0(偶数),会被错误纳入结果。比如"python"不是回文,但len(is_palindrome("python"))为0,满足偶数条件,因此被误选。even_length_palindromes函数逻辑错误
原逻辑判断的是is_palindrome返回值的长度是否为偶数,而非字符串本身是回文且长度为偶数,完全偏离了需求目标。
修复后的代码
def is_palindrome(string): # 直接返回布尔值,标记是否为回文 return string == string[::-1] def even_length_palindromes(strings): # 同时满足两个条件:是回文,且长度为偶数 return [s for s in strings if is_palindrome(s) and len(s) % 2 == 0] # 测试 print(even_length_palindromes(["radar", "level", "python", "noon", "racecar"]))
修复说明
is_palindrome改为返回布尔值,明确标记字符串是否为回文,避免了返回值类型混乱带来的错误判断。even_length_palindromes使用列表推导式,同时校验两个核心条件:字符串是回文、字符串长度为偶数,精准筛选出符合要求的结果。
内容的提问来源于stack exchange,提问作者SkyMonkey
相关产品推荐
相关产品推荐

