Python实现文本文件中各人员数值平均值计算及报错解决
现有代码报错原因
- 变量未定义:主程序调用
read_txt(file_txt)后没有接收函数返回值,后续代码引用的lines无对应赋值,直接触发NameError - 类型错误:
read_txt返回的是原始字符串构成的行列表,直接对字符串列表执行sum()操作会触发类型不支持的报错 - 逻辑偏差:原代码试图对所有数据计算全局平均值,没有按行拆分人名与对应数值的结构,无法实现逐人计算平均值的需求
修正实现
Functions.py中的read_txt功能(读取文件全量行内容并返回)符合设计预期,无需修改,仅调整主程序的解析逻辑即可:
- 接收
read_txt返回的行数据 - 逐行清理首尾无效空白、按逗号拆分字段
- 分离人名与对应数值,将数值字段转为整数类型
- 计算单人维度的平均值,按指定格式输出
修正后的主程序代码:
from Functions import read_txt file_txt = input("input file: ") # 获取文件读取结果 lines = read_txt(file_txt) for line in lines: clean_line = line.strip() # 跳过空行避免解析异常 if not clean_line: continue # 拆分逗号分隔的字段 fields = clean_line.split(",") name = fields[0] # 提取数值并转为整数 nums = [int(item) for item in fields[1:]] # 计算平均值 avg = sum(nums) / len(nums) # 整数结果去除多余小数后缀 if avg.is_integer(): avg = int(avg) # 按要求格式输出 print(f"{name}: {avg}")
运行效果
输入文件名boys.txt后,输出与要求格式完全匹配:
ed lin: 2.5 thomas block: 4
内容的提问来源于stack exchange,提问作者frederiko102
相关产品推荐
相关产品推荐

