检查python中的回文

检查python中的回文,python,char,palindrome,Python,Char,Palindrome,回文的 以下是我迄今为止编写的代码: string=input(("Enter a string:")) for char in string: print(char) if(string==string[::-1]): print("The string is a palindrome") else: print("Not a palindrome") 要生成所描述的输出,似乎需要执行字符级比较。您尝试的是将字符串与其反面进行直接比较。试试这个: string

回文的

以下是我迄今为止编写的代码:

string=input(("Enter a string:"))
for char in string:
    print(char)
if(string==string[::-1]):
      print("The string is a palindrome")
else:
      print("Not a palindrome")

要生成所描述的输出,似乎需要执行字符级比较。您尝试的是将字符串与其反面进行直接比较。试试这个:

string=input(("Enter a string:"))
rev_string = string[::-1]
for i in range(len(string)):
    print (string[i], "--", rev_string[i])
    if string[i].lower() != rev_string[i].lower():
        print("Not a palindrome")
        exit(0)
print("The string is a palindrome")

我想指出,正如中所讨论的,检查两个字符是否相同并非易事。以下代码适用于任何字符:

import unicodedata


def normalize_caseless(text):
    return unicodedata.normalize("NFKD", text.casefold())


def caseless_equal(left, right):
    return normalize_caseless(left) == normalize_caseless(right)


string = input("Enter a string: ")
rev_string = string[::-1]

i = 0
palindrome = True
while palindrome and i < len(string):
    print(f'{string[i]} -- {rev_string[i]}')
    palindrome = caseless_equal(string[i], rev_string[i])
    i += 1

print(f"The string is{' not'*(not palindrome)} a palindrome")