Panjaram检测
Pangram detection
这里是初学者--
给定一个字符串,我的代码必须检测它是否是一个 pangram。 Return 如果是,则为真,如果 not.It 应忽略数字和标点符号,则为假。
当给出“ABCD45EFGH,IJK,LMNOPQR56STUVW3XYZ”时,它 returns none 并且当给出“这不是 pangram!不是 pangram”时。它 returns 当答案应该为假时为真。
这不是拼音!不是拼音。我没看到什么?
import string
def is_pangram(s):
singlechar = set(s)
list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
for index, item in enumerate(singlechar):
if item in list:
list.remove(item)
if list:
return True
break
if not list:
return False
您可以继续使用集合及其方法 .difference
来查明所有字符的集合中是否有更多字符或没有差异(在此之前您需要去除字符串来自标点符号(和空格)并将其变为小写(通过 .lower
和 .translate
以及 .maketrans
字符串方法完成):
import string
def is_pangram(s):
input_set = set(s.lower().translate(
str.maketrans('', '', f'{string.punctuation} ')))
check_set = set(string.ascii_lowercase)
return not check_set.difference(input_set)
value1 = 'The quick brown fox jumps over a lazy dog!'
print(is_pangram(value1))
# True
value2 = 'This isn\'t a pangram! is not a pangram'
print(is_pangram(value2))
# False
如果你还想用列表来做:
def is_pangram(s):
input_set = set(s.lower().translate(
str.maketrans('', '', f'{string.punctuation} ')))
lst = list(string.ascii_lowercase)
for item in input_set:
if item in lst:
lst.remove(item)
if not lst:
return True
return False
集合是检查某物是否属于具有交集的两个集合或不属于具有差异的两个集合之一的好方法。
在你的情况下,如果你的短语中的字母组与字母 a-z 的交集长度为 26,则它是一个 pangram。
from string import ascii_lowercase
def is_pangram(s):
return len(set(s.lower()).intersection(ascii_lowercase)) == 26
这里是初学者-- 给定一个字符串,我的代码必须检测它是否是一个 pangram。 Return 如果是,则为真,如果 not.It 应忽略数字和标点符号,则为假。
当给出“ABCD45EFGH,IJK,LMNOPQR56STUVW3XYZ”时,它 returns none 并且当给出“这不是 pangram!不是 pangram”时。它 returns 当答案应该为假时为真。
这不是拼音!不是拼音。我没看到什么?
import string
def is_pangram(s):
singlechar = set(s)
list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
for index, item in enumerate(singlechar):
if item in list:
list.remove(item)
if list:
return True
break
if not list:
return False
您可以继续使用集合及其方法 .difference
来查明所有字符的集合中是否有更多字符或没有差异(在此之前您需要去除字符串来自标点符号(和空格)并将其变为小写(通过 .lower
和 .translate
以及 .maketrans
字符串方法完成):
import string
def is_pangram(s):
input_set = set(s.lower().translate(
str.maketrans('', '', f'{string.punctuation} ')))
check_set = set(string.ascii_lowercase)
return not check_set.difference(input_set)
value1 = 'The quick brown fox jumps over a lazy dog!'
print(is_pangram(value1))
# True
value2 = 'This isn\'t a pangram! is not a pangram'
print(is_pangram(value2))
# False
如果你还想用列表来做:
def is_pangram(s):
input_set = set(s.lower().translate(
str.maketrans('', '', f'{string.punctuation} ')))
lst = list(string.ascii_lowercase)
for item in input_set:
if item in lst:
lst.remove(item)
if not lst:
return True
return False
集合是检查某物是否属于具有交集的两个集合或不属于具有差异的两个集合之一的好方法。
在你的情况下,如果你的短语中的字母组与字母 a-z 的交集长度为 26,则它是一个 pangram。
from string import ascii_lowercase
def is_pangram(s):
return len(set(s.lower()).intersection(ascii_lowercase)) == 26