如何使用Python计算并输出文本文件中的成本平均值与每升成本
完善Python代码计算汽油成本的平均值与每升成本
原代码存在的问题
- 分割文件内容后得到的是字符串列表,直接执行
sum(s)会触发TypeError,因为字符串无法直接求和 - 手动删除列表元素的逻辑冗余且易出错,没有正确跳过表头行
- 重复打开文件造成资源浪费
- 未实现每升成本的计算逻辑
修正后的完整代码
# 初始化存储升数和成本的列表 liters = [] costs = [] # 一次性读取并处理文件数据 with open('petrolPrice.txt') as f: # 跳过第一行表头 next(f) for line in f: # 处理每行数据,兼容制表符或空格分隔 parts = line.strip().split() if len(parts) != 2: continue # 跳过格式异常的行 # 将字符串转换为浮点数,存入对应列表 liter = float(parts[0]) cost = float(parts[1]) liters.append(liter) costs.append(cost) # 计算成本平均值(每次加油的平均花费) average_cost = sum(costs) / len(costs) # 计算每升平均成本(总成本除以总升数) cost_per_liter = sum(costs) / sum(liters) # 格式化输出结果,保留两位小数 print(f"成本平均值: {average_cost:.2f}") print(f"每升成本: {cost_per_liter:.2f}")
代码说明
- 跳过表头:使用
next(f)直接跳过第一行的表头,逻辑更清晰 - 逐行处理数据:避免一次性读取大文件占用过多内存,同时逐行解析更稳定
- 类型转换:将读取的字符串转换为浮点数,确保数值计算的正确性
- 异常处理:跳过格式错误的行,避免程序崩溃
- 高效计算:一次读取文件完成所有数据收集,后续只需对列表进行求和计算即可
- 格式化输出:使用
:.2f格式化结果,符合金额类数据的显示习惯
内容的提问来源于stack exchange,提问作者Valentine Lancin
相关产品推荐
相关产品推荐

