Python计算数字方差触发TypeError: 'int' object is not callable求助
报错原因
你遇到的TypeError: 'int' object is not callable错误出现在sum((y-avg) **2 for y in linelist)这部分逻辑,触发原因是:
- 你在运行这段代码之前,曾经给Python内置函数
sum赋值过整数类型的值,导致原本用来求和的内置函数sum被覆盖成了整数,你尝试调用整数时就会抛出该错误。
除此之外你的代码还有两处可优化/修复的问题,否则就算解决了上述报错也会运行失败:
- 你往
linelist中追加的x是字符串类型,没有转成整数,后续计算y-avg时会抛出字符串与浮点数无法做减法的类型错误 - 方差计算逻辑写在了
while循环内部,每读一行就会重复计算一次方差,属于冗余操作,可以移到循环结束、所有数据读取完成后再执行
修复步骤
- 重启你的Python运行环境,清除之前误赋值的
sum变量 - 将代码中
linelist.append(x)修改为linelist.append(int(x)),把读取到的文本内容转成整数后再存入列表 - 将方差计算的那行代码移动到
while循环结束后、f.close()之前的位置,减少不必要的重复计算
内容的提问来源于stack exchange,提问作者clicktac
相关产品推荐
相关产品推荐

