计算数字的变体 / TypeError: 'int' object is not callable

Posted

技术标签:

【中文标题】计算数字的变体 / TypeError: \'int\' object is not callable【英文标题】:Calculate variant of the numbers / TypeError: 'int' object is not callable计算数字的变体 / TypeError: 'int' object is not callable 【发布时间】:2021-11-09 04:23:59 【问题描述】:

我得到 TypeError: 'int' object is not callable on line 27 (var = ...)

文件data1_.txt只有5行,每行一个整数。

谁能帮我理解为什么?

line_number = 0;
countline = 0;
linesum = 0;
avg = 0;
var = 0;
linelist = [];

f = open("data1_.txt", "r")

while True:
#how to count lines    
    line = f.readline()
    if line == "" :
        break
    line = line.rstrip("\n\r")
    line_number += 1
    if line != "/n":
        countline += 1
#how to list the numbers     
    x = line.strip()
    linelist.append(x)
#how to sum the numbers of the list
    linesum += int(x)*1.0
    avg = linesum/countline;

#how to calculate variant of numbers
    var = sum((y-avg) **2 for y in linelist) / countline
    
f.close()

print("number of lines:", countline)
print("the numbers:", linelist)
print("sum of numbers:", linesum)
print("avarage:", avg)
print("variant:", var)

【问题讨论】:

我敢打赌,您之前将 sum 重新定义为 int。 How to Ask 和 minimal reproducible example. jfyi,python 在语句末尾不需要; @Julien ,是的,我做到了,但我该如何解决呢?这是我第一次这样做。我读了其他答案,但我听不懂。 好吧,不要这样做。 (如果需要,重新启动您的 IPython 会话) @Julien 所以你告诉我,如果我在 python 中重新定义了某些东西,它会更改为该实例中的所有编码? 【参考方案1】:

我发现了你的问题。在您的 sum 语句中,您试图比较 y 的字符串值(这是 readlines 给出的),它应该是一个浮点值。

试试这个:

#how to calculate variant of numbers
    var = sum((float(y)-avg) **2 for y in linelist) / countline

【讨论】:

感谢您的回复,但没有任何变化。 cmets 中的 Julien 说:“我敢打赌,您之前将 sum 重新定义为 int。”我真的做到了。有问题吗? @clicktac 哎呀,忘了一点 @clicktac 现在应该没问题了,我已经编辑过了 不,同样的错误。 之前,我只使用 sum 而不是 linesum,这是否与 python / jupyter 混淆了?对不起,如果我的问题没有意义。

以上是关于计算数字的变体 / TypeError: 'int' object is not callable的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:int() 参数必须是字符串、类似字节的对象或数字,而不是“DataFrame”

Python 2 - TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“列表”

TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是使用 Python 3.7 时的“NoneType”

Django 保存到 DB:TypeError:int() 参数必须是字符串、类似字节的对象或数字,而不是“元组”

Django TypeError int() 参数必须是字符串或数字,而不是 'QueryDict'

TypeError: sequence item 0: expected str instance, int found