检查字符串是否为回文式返回错误结果

时间:2019-04-11 17:53:28

标签: python recursion

我正在尝试使用递归检查字符串是否是回文。我目前只是在尝试开发简单的案例。

我的函数将字符串作为输入。然后,它会删除标点符号。我要做的下一件事是检查单词的第一个字母是否等于单词的最后一个字母。如果是,则返回字符串一。如果不是,则返回第二个字符串。

def palindrome(word):    
    stringOne = "It's a palindrome"
    stringTwo = "It's not a palindrome"
    edit = word.strip("!").strip(",").strip("")

    if edit[0] == edit[-1]:
        return stringOne 
    else:
        return stringTwo

print(palindrome("Yay!"))

代码正在运行。但是,输入字符串“ Yay!”。 (这是回文)返回“这不是回文”。我的if语句无法正常工作的任何原因?

1 个答案:

答案 0 :(得分:0)

除了@RWRkeSBZ在注释中指出的字母大小写问题外,这是使用递归 helper 函数有意义的一个很好的例子。一旦将字符串清理为仅包含字母,就没有理由在递归时再次这样做。取而代之的是,我们调用了一个例程来处理这些问题,并提供了一个更专注的,递归的辅助函数来进行实际处理:

def palindrome_recursive(letters):
    if len(letters) <= 1:
        return True

    if letters[0] != letters[-1]:
        return False

    return palindrome_recursive(letters[1:-1])

def palindrome(phrase):
    stringOne = "It's a palindrome"
    stringTwo = "It's not a palindrome"

    edit = phrase.strip("!,").strip().lower()

    if palindrome_recursive(edit):
        return stringOne

    return stringTwo

print(palindrome("Able was I ere I saw Elba!"))