如何检查字符串是否为回文?

新手上路,请多包涵

我有一个代码来检查一个词是否是回文:

 str = input("Enter the string")
l = len(str)
p = l-1
index = 0
while index < p:
    if str[index] == str[p]:
        index = index + 1
        p = p-1
        print("String is a palindrome")
        break
    else:
        print("string is not a palindrome")

如果输入一个单词,例如: rotor ,我希望程序检查这个单词是否是回文并给出输出“给定的单词是回文”。

但我面临的问题是,程序首先检查 r 和 r 并打印“给定的单词是回文”,然后检查 o 和 o 并打印“给定的单词是回文”。它打印结果的次数与检查单词的次数一样多。

我希望结果只传递一次。如何更改代码?

原文由 Kawin M 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 673
2 个回答

只需反转字符串并将其与原始字符串进行比较

string_to_check = input("Enter a string")

if string_to_check == string_to_check[::-1]:
    print("This is a palindrome")
else:
    print("This is not a palindrome")

原文由 AK47 发布,翻译遵循 CC BY-SA 3.0 许可协议

我不得不对您的代码进行一些更改以复制您所说的您看到的输出。

最终,您想要的是仅在所有比较结束时显示消息。在你的例子中,你把它放在循环中,所以每次循环运行并且它遇到 if 条件时,都会打印状态消息。相反,我更改了它,以便它仅在两个指针 indexp 位于单词中间时打印。

 str = input("Enter the string: ")
l = len(str)
p = l-1
index = 0
while index < p:
    if str[index] == str[p]:
        index = index + 1
        p = p-1
        if index == p or index + 1 == p:
            print("String is a palindrome")
    else:
        print("string is not a palindrome")
        break

原文由 Antimony 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题