我正在尝试使用递归检查一个字符串是否为回文。我目前只是在尝试开发简单的案例。
我的函数接受一个字符串作为输入。然后它会去掉标点符号。我做的下一件事是检查单词的第一个字母是否等于单词的最后一个字母。如果是,则返回字符串1。如果不是,则返回第二个字符串。
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语句不工作有什么原因吗?
发布于 2019-04-12 02:26:46
除了@RWRkeSBZ在评论中指出的字母大小写问题之外,这是一个很好的例子,说明了在哪里使用递归助手函数是有意义的。一旦您清理了字符串,使其只包含字母,就没有理由在递归时再次这样做。取而代之的是,我们有一个处理这些问题的例程,以及一个更专注、更递归的助手函数来执行真正的处理:
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!"))https://stackoverflow.com/questions/55638545
复制相似问题