我创建了一个函数,如果参数包含ascii.lowercase
字符串(英文字母)中的每个字母,则返回一个布尔值。
在代码中,我使用一个for循环使用string
模块方法string.whitespace
和string.punctuation
查找空格和标点的成员。
在测试for循环时,string.punctuation
部分的特殊字符似乎与for循环提供的特殊字符不匹配。
请提供string.punctuation
不能按计划运行的理由。
import string
def ispanagram(text, alphabet = string.ascii_lowercase):
"""Return boolean if argument is contains every letter in the ascii alphabet"""
alphabet_list = list(alphabet)
letter_set = sorted(set(text.lower()))
for char in letter_set:
if char in string.whitespace or char in string.punctuation:
letter_set.remove(char)
return letter_set == alphabet_list
ispanagram("The quick brown !fox jumps over the lazy dog")
答案 0 :(得分:3)
答案 1 :(得分:0)
让我知道是否有帮助。
import string
import re
def ispanagram(text, alphabet = string.ascii_lowercase):
"""Return boolean if argument is contains every letter in the ascii alphabet"""
alphabet_list = list(alphabet)
# just remove all the special characters including space
text_only_chars = re.sub(r"[-()\"#/@;:<>{}`+=~|.!?, ]", "", text)
letter_set = sorted(set(text_only_chars.lower()))
return letter_set == alphabet_list
print(ispanagram("The quick brown !fox jumps over the lazy dog"))
#### Output ####
True