首页 > 解决方案 > 我如何使用设置交集方法来确定一个刺是一个 pangram?

问题描述

我应该编写一个代码来确定一个字符串是否是一个 pangram。我已经通过另一种方法解决了这个练习,但我对使用交集方法解决它非常感兴趣。

我的代码不会引发错误,但是当它应该为真时,它会在测试时出现错误。这是我的代码:

import string

def ispangram(str1, alphabet=string.ascii_lowercase):
    a= str1.lower().replace(" ","")
    if list(set(a).intersection(set(alphabet)))== alphabet:
        return True
    else:
        return False

请告诉我是否可以通过这种方法解决练习,如果可以,我哪里出错了?

标签: pythonstringalgorithm

解决方案


string.ascii_lowercase 返回一个与列表进行比较的字符串。

以下代码检查字母表中的所有字母是否都被句子中的相同字母覆盖。我对字母表使用了 freezeset,因为它是一个不可变的值:

def is_pangram(sentence, _alphabet=frozenset(string.ascii_lowercase)):
    return not ( _alphabet - set(sentence.lower()))

样品用途:

In [51]: is_pangram("Being bounced around quickly annoyed the disheveled taxi drivers.")
Out[51]: False

In [52]: is_pangram('Glib jocks quiz nymph to vex dwarf.')
Out[52]: True

In [53]: is_pangram('Public junk dwarves quiz mighty fox.')
Out[53]: True

In [54]: is_pangram('Public junk dwarves quiz mighty foe.')
Out[54]: False

In [55]: 

推荐阅读