python - 检查字符串是否为回文返回错误结果
问题描述
我正在尝试使用递归检查字符串是否为回文。我目前只是在尝试开发简单的案例。
我的函数将一个字符串作为输入。然后它会去掉标点符号。接下来我要做的是检查单词的第一个字母是否等于单词的最后一个字母。如果是,则返回字符串一。如果不是,则返回第二个字符串。
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
陈述不起作用?
解决方案
除了@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!"))
推荐阅读
- java - 如何将 Java 转换为 Kotlin
- ios - Xcode 10 归档失败 - 仅在命令行 (xcodebuild)
- r - 预测不适用于 mira/mipo?
- java - 如何使用 AsyncHttpClient 发送 JSON 正文?
- javascript - 如何从json字符串中提取地图?
- angular - 离子 - this.navctrl.push() 不工作
- python - 如何使用 conda 下载 en for spacy?
- javascript - 如何解决手机地址栏隐藏/出现问题?
- c# - 如何使用 C# 将列表数组附加到数据网格视图
- javascript - WebAssembly 包含 OpenCV