You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pangram detection实现代码返回错误结果问题排查

Pangram检测代码问题分析

你的代码一共存在4处逻辑和功能缺陷,正好对应你遇到的两个异常:

  • 未处理大小写匹配问题:你预设的目标字母列表是小写a-z,但输入字符串中的大写字母不会被识别到匹配项。第一个测试用例全是大写字母,循环全程不会触发匹配分支,函数走完没有触发任何return,自然返回none。
  • 匹配成功后的判断逻辑完全写反:你写的是每匹配到一个存在的字母、删除目标列表对应项后,只要目标列表list还不为空就直接返回True,相当于只要字符串里有任意一个英文字母就会直接返回True,这就是第二个测试用例错误返回True的直接原因。
  • 循环结束后的返回逻辑也写反:循环走完后如果目标列表是空,说明26个字母全部匹配到了,应该返回True,但你的代码写的是返回False。
  • 多余的break写法:return之后函数已经直接终止了,后面的break永远不会执行,属于无效代码。另外不建议用list作为变量名,这是Python的内置关键字,会覆盖原有的list类型功能。

修正后的参考代码

import string

def is_pangram(s):
    # 统一转小写,忽略大小写差异
    char_set = set(s.lower())
    target = set(string.ascii_lowercase)
    # 判断所有小写字母是不是都存在于输入的字符集合中
    return target.issubset(char_set)

如果要按你原来的遍历写法修改也可以:

def is_pangram(s):
    singlechar = set(s.lower())
    target_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 item in singlechar:
        if item in target_list:
            target_list.remove(item)
            # 所有字母都匹配到了才提前返回True
            if not target_list:
                return True
    # 循环走完看是不是所有字母都匹配完了
    return not target_list

内容的提问来源于stack exchange,提问作者kdendon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:57:01