如何使用集合交集方法判断字符串是否为pangram(全字母句)及代码排错
Python全字母句判断问题解答
思路可行性
使用集合交集实现全字母句判断的思路完全可行,相比遍历计数的方案实现更简洁,效率也更高。
代码错误原因
- 类型不匹配:你将交集计算结果转为
list类型,直接和string.ascii_lowercase(字符串类型)做相等判断,不同类型的对象永远不相等,所以所有用例都会返回False。 - 集合无序特性:即使你把
alphabet也转为列表对比,也会因为集合是无序存储结构,转列表后的元素顺序和string.ascii_lowercase的a-z顺序不一致,相等判断依然会失败。
修正后的代码
直接对比两个集合的相等性即可,不需要转列表,完全符合你要使用集合交集的需求:
import string def ispangram(str1, alphabet=string.ascii_lowercase): input_char_set = set(str1.lower()) return input_char_set.intersection(set(alphabet)) == set(alphabet)
如果不强制要求用交集,也可以用更简洁的子集判断,效果完全一致:
def ispangram(str1, alphabet=string.ascii_lowercase): return set(alphabet).issubset(set(str1.lower()))
内容的提问来源于stack exchange,提问作者melbel
相关产品推荐
相关产品推荐

