这是我目前的代码:
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()
我的问题是,为什么第一个版本不起作用? 它始终打印:句子不是回文。
答案 0 :(得分:4)
list1.reverse()
就地工作。它会反转list1
并返回None
,因此您要将列表与None
进行比较,并始终False
...
第二个代码将list1
的反向副本作为list
返回,因此两个列表都会进行比较并且有效。
注意:另一个陷阱是与list1 == reversed(list1)
进行比较。这可以在python 2中工作,但不能在python 3中工作,因为reversed
已经变成了可迭代的。
除此之外:不要list1 = [(x) for x in input()]
,而只是list1 = list(input())
(或者正如一些优秀的评论者建议,直接使用str
类型,根本不需要转换为字符串,[::-1]
操作也适用于字符串,因此只需更改为list1 = input()
在你的第二个代码片段中)