我在 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 将 list1
的 copy 反转为 list
因此两个列表都进行了比较并且有效。
注意:另一个陷阱是与 list1 == reversed(list1)
进行比较。这在 python 2 中有效,但在 python 3 中无效,因为 reversed
已变成可迭代对象。
旁白:不要 list1 = [(x) for x in input()]
而只是 list1 = list(input())
(或者像一些不错的评论者建议的那样,直接使用 str
类型,根本不需要转换为字符串, [::-1]
操作也适用于字符串,所以只需更改为 list1 = input()
在你的第二个代码片段中)
这是我目前的代码:
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 将 list1
的 copy 反转为 list
因此两个列表都进行了比较并且有效。
注意:另一个陷阱是与 list1 == reversed(list1)
进行比较。这在 python 2 中有效,但在 python 3 中无效,因为 reversed
已变成可迭代对象。
旁白:不要 list1 = [(x) for x in input()]
而只是 list1 = list(input())
(或者像一些不错的评论者建议的那样,直接使用 str
类型,根本不需要转换为字符串, [::-1]
操作也适用于字符串,所以只需更改为 list1 = input()
在你的第二个代码片段中)