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

Python读取文本文件拆分姓名与数字计算平均值的代码问题求助

代码问题排查及修复

原有代码的核心问题

  • 全局变量未重置:Digit、Avrg两个变量定义在遍历行的循环外部,处理完第一行后数值不会清零,处理第二行时会累加第一行的计算结果,导致数据错误
  • 内层循环逻辑错误:for substring in line是遍历当前行的每一个字符,而非遍历行拆分后的数字元素,同时重复调用line.split(" ")既低效也容易触发索引越界
  • 平均值计算逻辑错误:计算平均值时分母用了持续累加的Digit,而非当前行的数字总个数,计算结果不符合要求
  • 资源未释放:文件打开后没有主动关闭,存在资源泄漏风险

修复后的代码

# 用with上下文管理器自动处理文件关闭
with open("Mokiniai.txt", "r") as file:
    for line in file:
        line = line.strip("\n")
        # 单次拆分当前行,避免重复split
        parts = line.split(" ")
        # 提取姓名
        name = parts[0]
        # 提取当前行的所有数字并转成整数
        scores = list(map(int, parts[1:]))
        # 计算平均值
        avg = sum(scores) / len(scores)
        # 按要求输出,平均值用斜体展示
        print(f"{name} *{avg}*")

如果需要指定小数位数,可以把输出行改成print(f"{name} *{avg:.1f}*"),即可保留1位小数输出。

输出示例

按你提供的测试文本运行后,输出如下:

Frank *7.4*
Oliver *7.0*

内容的提问来源于stack exchange,提问作者Rimants Šiupienis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:45:04