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

编写程序统计mbox-short.txt中发送邮件最多的用户求助

问题分析与修正代码

原代码的问题

  • 统计对象错误:找到From开头的行后,你遍历了该行所有单词并全部统计,但我们只需要统计该行的第二个元素(即邮箱地址wds[1])。
  • 最大值查找逻辑混乱:将查找最大值的嵌套循环放在了单词遍历内部,每处理一个单词就重复遍历字典,还频繁输出,导致逻辑错误且输出冗余。
  • 变量未初始化:theword没有提前初始化,极端情况下可能引发未定义错误。

修正后的代码

name = input("Enter file:")
if len(name) < 1:
    name = "mbox-short.txt"
handle = open(name)

email_counts = {}
max_count = 0
max_email = ""

for line in handle:
    line = line.rstrip()
    words = line.split()
    # 跳过空行或不符合格式的行
    if len(words) < 2 or words[0] != 'From':
        continue
    email = words[1]
    # 统计邮箱出现次数
    email_counts[email] = email_counts.get(email, 0) + 1

# 遍历字典找出计数最多的邮箱
for email, count in email_counts.items():
    if count > max_count:
        max_count = count
        max_email = email

print(f"{max_email} {max_count}")

代码说明

  1. 筛选有效行:通过len(words) < 2 or words[0] != 'From'跳过空行和非From开头的行,确保只处理包含邮箱的有效行。
  2. 精准统计邮箱:只提取words[1]作为邮箱地址,用字典email_counts统计每个邮箱的出现次数。
  3. 统一查找最大值:在所有邮箱统计完成后,遍历字典一次,找出计数最大的邮箱和对应的次数,最后输出结果。

运行修正后的代码,即可得到预期结果:cwen@iupui.edu 5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:20