gpt4 book ai didi

python - 我可以在 python 中编写忽略特殊字符(如逗号、空格、感叹号等)的代码吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:39 25 4
gpt4 key购买 nike

我想创建一个将返回“true”的代码(如果我输入回文而不考虑大小写或者其中是否有特殊字符),否则返回“false”。到目前为止,我的代码适用于没有特殊字符(例如逗号、撇号、空格等)的短语。

def is_palindrome(my_str):
my_str= my_str.casefold()
rev_str= reversed(my_str)

if list(my_str) == list(rev_str):
print("True")
else:
print("False")

当我这样做时:

 print (is_palindrome("Rats live on no evil star"))

它返回 True 因为它是一个回文数

当我这样做时:

 print (is_palindrome("Hello World!"))

它返回 False 因为它不是回文

当我这样做时:

 print (is_palindrome("Madam, I'm Adam"))

它返回 False。但我想创建一个将其视为回文的代码

最佳答案

你需要在测试之前进行过滤:

letters = [c.casefold() for c in my_str if c.isalpha()]

将只挑选出字母并将它们小写,之后您可以测试这些字母是否形成回文:

return letters == letters[::-1]

这是有效的,因为 str.isalpha()仅对字母返回 True

合并到你的函数中:

def is_palindrome(my_str):
letters = [c.casefold() for c in my_str if c.isalpha()]
return letters == letters[::-1]

演示:

>>> def is_palindrome(my_str):
... letters = [c.casefold() for c in my_str if c.isalpha()]
... return letters == letters[::-1]
...
>>> is_palindrome("Rats live on no evil star")
True
>>> is_palindrome("Hello World!")
False
>>> is_palindrome("Madam, I'm Adam")
True

关于python - 我可以在 python 中编写忽略特殊字符(如逗号、空格、感叹号等)的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745193/

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