我在 python 的回文程序上需要帮助

I need help on my palindrome programm in python

这是我目前的代码:

  def main():
        list1 = [(x) for x in input()]
        if (list1 == list1.reverse()):
            print("The sentence is a palindrome.")
        else:
            print("The sentence is not a palindrome.")

    main()

而且它不起作用。当我在论坛上找到它们时,我做了以下调整并且有效:

def main():
    list1 = [(x) for x in input()]
    if (list1 == list1[::-1]):
        print("The sentence is a palindrome.")
    else:
        print("The sentence is not a palindrome.")

main()

我的问题是,为什么第一个版本不起作用? 它总是打印:句子不是回文。

list1.reverse() 就地工作。它反转 list1 和 returns None,因此您将列表与 None 进行比较,它始终是 False...

第二个代码 returns 将 list1copy 反转为 list 因此两个列表都进行了比较并且有效。

注意:另一个陷阱是与 list1 == reversed(list1) 进行比较。这在 python 2 中有效,但在 python 3 中无效,因为 reversed 已变成可迭代对象。

旁白:不要 list1 = [(x) for x in input()] 而只是 list1 = list(input())

(或者像一些不错的评论者建议的那样,直接使用 str 类型,根本不需要转换为字符串, [::-1] 操作也适用于字符串,所以只需更改为 list1 = input() 在你的第二个代码片段中)