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

Python邮件过滤:统计有效/垃圾邮件数量的代码问题求助

邮件分类计数代码修正建议

原代码核心问题

  • 有效性判断逻辑错误:通过split('cpp')、split('isc')判断域名完全不可靠,无法精准识别@后的完整有效域名(比如cpp_user@gmail.com会被误判,而test@isc.edu.cn会被漏判)。
  • 循环执行逻辑错误:for循环后的else块仅在循环完整遍历所有元素后执行一次,导致valid只会被加1,完全无法实现逐个邮件计数。
  • 垃圾邮件计数逻辑错误:not_valid = len(cpp) + len(isc)的计算与实际垃圾邮件数量无关联,结果完全不符合需求。

修正后的代码

def email_filter(email_ids: list) -> tuple[int, int]:
    valid_domains = {'isc.edu', 'cpp.edu'}
    valid_count = 0
    for email in email_ids:
        # 先检查邮件地址格式是否包含@,避免分割报错
        if '@' in email:
            domain = email.split('@')[1]
            if domain in valid_domains:
                valid_count += 1
    # 垃圾邮件数为总邮件数减去有效邮件数
    spam_count = len(email_ids) - valid_count
    return valid_count, spam_count

修正说明

  • 用集合valid_domains存储有效域名,既保证判断效率,也让有效域名的维护更清晰。
  • 先验证邮件地址包含@,再提取@后的完整域名进行匹配,确保判断的精准性。
  • 有效邮件数通过逐个符合条件的邮件累加得到,垃圾邮件数通过总数量减去有效数推导,逻辑严谨且高效。
  • 返回类型标注更新为Python 3.9+支持的tuple[int, int],若使用旧版本Python,可改回(int, int)。

测试验证

针对示例输入["zrdd@cpp.edu", "werty@icloud.com", "example@isc.edu", "gist@yahoo.com", "comsc600@cpp.edu"],修正后的代码会返回(3, 2),与预期的3个有效邮件、2个垃圾邮件完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 07:42:10