为何判断Pangram时仅set长度有效,直接用字符串长度无效?
为什么判断Pangram时用字符串长度无效,而集合长度有效?
Pangram的核心要求是包含英文字母表中全部26个不同字母,对字符串的总长度没有限制——句子里可以重复出现字母,总长度只会≥26,不会刚好等于26(除非是完全无重复的26个字母组成的句子,但这种情况极少)。
无效代码的问题
def checkIfPangram(sentence): return len(sentence) == 26 print(checkIfPangram('thequickbrownfoxjumpsoverthelazydog'))
这段代码判断的是「字符串总字符数刚好等于26」,但示例里的Pangram句子长度远大于26,所以直接返回False。就算有个字符串长度是26,也可能是重复的单一字母(比如26个"a"),根本不满足Pangram的要求。这个逻辑从根上就错了。
有效代码的逻辑
def checkIfPangram(sentence): return len(set(sentence)) == 26 # answer is True print(checkIfPangram('thequickbrownfoxjumpsoverthelazydog'))
set(sentence)会自动去掉字符串里的重复字符,只保留每个不同的字符。如果去重后的集合长度是26,说明刚好覆盖了所有26个英文字母,完美匹配Pangram的定义,所以能得到正确结果。
内容的提问来源于stack exchange,提问作者user531309
相关产品推荐
相关产品推荐

