【问题标题】:Check for a palindrome in python在 python 中检查回文
【发布时间】:2020-09-02 05:58:30
【问题描述】:

回文

这是我目前写的代码:

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")

【问题讨论】:

    标签: python char palindrome


    【解决方案1】:

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

    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")
    

    【讨论】:

      【解决方案2】:

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

      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")
      

      【讨论】:

        猜你喜欢
        • 2022-11-14
        • 1970-01-01
        • 2021-04-03
        • 2018-02-22
        • 2013-09-28
        • 2020-04-18
        • 2022-11-15
        • 1970-01-01
        相关资源
        最近更新 更多