首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pangram检测

Pangram检测
EN

Stack Overflow用户
提问于 2021-10-25 20:48:31
回答 2查看 74关注 0票数 0

这里是初学者--给定一个字符串,我的代码必须检测它是否是pangram。如果是,则返回True;如果not.It应忽略数字和标点符号,则返回False。

当给出"ABCD45EFGH,IJK,LMNOPQR56STUVW3XYZ“时,它返回none;当给出"This is not a pangram!is not a pangram”时,它返回none。当答案应该为False时,它返回True。

这不是pangram!不是pangram。我没看到的是什么?

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-25 21:08:20

您可以继续使用集合及其方法.difference来确定所有字符的集合中是否有更多的字符,或者没有差异(在此之前,您需要去掉字符串的标点符号(和空格)并使其小写(由字符串的.lower.translate.maketrans方法完成):

代码语言:javascript
运行
复制
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

如果你仍然想用一个列表来做:

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2021-10-25 21:13:58

集合是一种很好的方法,可以用来检查某些东西是属于两个具有交集的集合,还是不属于具有差异的两个集合中的一个。

在您的例子中,如果短语中的字母集与字母a-z之间的交集长度为26,则它是一个pangram。

代码语言:javascript
运行
复制
from string import ascii_lowercase

def is_pangram(s):
    return len(set(s.lower()).intersection(ascii_lowercase)) == 26
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69714586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档