Python读取CSV做算术运算报TypeError但输出正确,求解决方法
问题解答
1. 报错却输出内容的原因及解决方法
你看到的30并不是平均值的计算结果,所谓「报错但结果正确」是误判:
- 报错触发在
sum += lines这一行,该行之后的平均值计算、print(avg)代码完全没有执行 30是循环内print(lines[1])打印的CSV文件最后一行第二列的原始值,属于循环阶段的中间输出,和你要的最终平均值无关- 进程最终返回退出码
1,属于典型的异常终止,不存在运行完整逻辑的情况
解决方法:先修复下方的类型错误,确保代码可以正常执行到最后一行,再验证输出结果是否符合预期。
2. 加法运算适配调整方案
当前代码有3处核心错误导致加法无法正常执行,按以下规则调整即可:
csv.reader返回的lines是每行数据组成的列表,不能直接和整数相加,需要先取出要计算的对应列,转换为int/float数值类型- 不要用
sum作为变量名,它是Python内置的求和函数,自定义变量会覆盖原函数功能,建议替换为total - 平均值计算公式写反:正确逻辑是「总和÷计数」,原代码写为「计数÷总和」,结果会完全不符合预期
- 额外注意:原代码
with块内的代码缩进错误,for循环外层的多余括号也属于无效语法,需要一并清理
修复后可正常运行的代码:
import csv counter = 0 total = 0 with open('sales_data_sample (3).csv','r') as csv_file: csv_reader = csv.reader(csv_file) next(csv_reader) for lines in csv_reader: # 若要计算其他列的和,修改索引即可 current_val = int(lines[1]) print(current_val) counter += 1 total += current_val avg = total / counter print(avg)
内容的提问来源于stack exchange,提问作者Zak ah
相关产品推荐
相关产品推荐

