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

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,然后打印“给定单词是回文”。它打印结果的次数与检查单词的次数相同。
我希望结果只传递一次。如何更改代码?

最佳答案

我不得不在你的代码中做一些修改来复制你说你看到的输出。
最后,您需要的是消息只在所有比较结束时显示。在您的例子中,它在循环中,因此每次循环运行并达到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

07-24 18:54
查看更多