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
相关产品推荐
相关产品推荐

