gpt4 book ai didi

python - 从另一个列表中删除一个列表的成员

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:58 25 4
gpt4 key购买 nike

我正在编写一个程序来检查用户输入的单词或句子是否为回文。这是目前的程序:

def reverse(text):
a = text[::-1]
if a == text:
print "Yes, it's a palindrome."
else:
print "No, it's not a palindrome."

string = str(raw_input("Enter word here:")).lower()

reverse(string)

但是,此代码不适用于句子。所以我试着这样做:

import string

def reverse(text):
a = text[::-1]
if a == text:
print "Yes, it's a palindrome."
else:
print "No, it's not a palindrome."

notstring = str(raw_input("Enter word here:")).lower()

liststring = list(notstring)

forbiddencharacters = string.punctuation + string.whitespace

listcharacters = list(forbiddencharacters)

newlist = liststring - listcharacters

finalstring = "".join(newlist)

reverse(finalstring)

我的目标是将标点符号和空格放入一个列表中,然后将这些字符减去用户的输入,这样即使字符串中包含标点符号和/或空格,程序也可以判断它是否是回文。但是,我不知道如何将列表中的元素减去另一个列表中的元素。我这样做的方式,通过创建另一个等于用户输入减去字符的列表不起作用(我在我的 Xubuntu 终端仿真器中尝试过)。除此之外,当我运行程序时出现此错误:

Traceback (most recent call last):
File "reverse.py", line 12, in <module>
forbiddencharacters = string.punctuation + string.whitespace
AttributeError: 'str' object has no attribute 'punctuation'

好的,我已经更改了变量名,并且没有出现上面的错误。现在我仍然不知道如何减去列表的元素。

因为我是一名初级程序员,这对您来说可能看起来很愚蠢。如果是这样的话,我提前道歉。如果有人能解决我遇到的两个问题中的一个或两个,我将不胜感激。在此先感谢您的帮助。抱歉英语不好和长帖子:)

最佳答案

您应该在此过程中添加一些过滤,因为回文具有各种语法技巧(空格、逗号等)。

palindrome = "Rail at a liar"

def is_palindrome(text):
text = text.lower() #Avoid case issues
text = ''.join(ch for ch in text if ch.isalnum()) #Strips down everything but alphanumeric characters
return text == text[::-1]

if is_palindrome(palindrome):
print "Yes, it's a palindrome."
else:
print "No, it's not a palindrome."

关于python - 从另一个列表中删除一个列表的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26454820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com