Com*_*elp 1 python ignore special-characters palindrome
我想创建一个返回"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")
Run Code Online (Sandbox Code Playgroud)
当我做:
print (is_palindrome("Rats live on no evil star"))
Run Code Online (Sandbox Code Playgroud)
它返回True,因为它是回文
当我做:
print (is_palindrome("Hello World!"))
Run Code Online (Sandbox Code Playgroud)
它返回False,因为它不是回文
当我做:
print (is_palindrome("Madam, I'm Adam"))
Run Code Online (Sandbox Code Playgroud)
它返回False.但我想创建一个认为这是回文的代码
您需要在测试之前进行过滤:
letters = [c.casefold() for c in my_str if c.isalpha()]
Run Code Online (Sandbox Code Playgroud)
只挑出字母和小写字母,之后你可以测试这些字母形成一个回文:
return letters == letters[::-1]
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为只str.isalpha()返回True字母.
结合你的功能:
def is_palindrome(my_str):
letters = [c.casefold() for c in my_str if c.isalpha()]
return letters == letters[::-1]
Run Code Online (Sandbox Code Playgroud)
演示:
>>> 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1669 次 |
| 最近记录: |