测试失败-python回文检查器

测试失败-python回文检查器,python,python-2.7,doctest,Python,Python 2.7,Doctest,我用doctests创建了一个非常简单的回文检查器 我对最后一次医生检查有意见。它失败并且没有执行ignorecase=True。我弄不明白上次考试为什么不及格 代码: 注意,我讨厌你的可变选择。onlyletters是onlyletters的反面,是的,显然。。。无论如何 你不使用ignorecase,那它怎么能工作呢 下面是一个可能的解决方案: if ignorecase: return onlyLetters.lower() == onlyletters.lower() else:

我用doctests创建了一个非常简单的回文检查器

我对最后一次医生检查有意见。它失败并且没有执行ignorecase=True。我弄不明白上次考试为什么不及格

代码:


注意,我讨厌你的可变选择。onlyletters是onlyletters的反面,是的,显然。。。无论如何

你不使用ignorecase,那它怎么能工作呢

下面是一个可能的解决方案:

if ignorecase:
    return onlyLetters.lower() == onlyletters.lower()
else:
    return onlyLetters == onlyletters
def is_palindrome(s):
    if s == '':
        return True
    else:
        if s[0] == s[-1]:
            return is_palindrome(s[1:-1])
        else:
            return False

我的解决方案是,在降低案例后,将任何非字母替换为零

import re
def isPalindrome(s, ignoreCase):
    if ignoreCase: 
       s = s.lower()
    onlyLetters = re.sub("[^a-z]+", "", s)
    return(onlyLetters == onlyLetters[::-1])
我的第二个解决方案:

if ignorecase:
    return onlyLetters.lower() == onlyletters.lower()
else:
    return onlyLetters == onlyletters
def is_palindrome(s):
    if s == '':
        return True
    else:
        if s[0] == s[-1]:
            return is_palindrome(s[1:-1])
        else:
            return False
输出:

print is_palindrome('')
#>>> True 
print is_palindrome('abab')
#>>> False 
print is_palindrome('abba')
#>>> True