Python 斯皮尔曼秩相关-类型错误:';int';对象不可调用 studlst=['ABDIHAFITH',8,16,19,20,3,25,16,2,9],'ADAM',12,9,17,24,13,6,15,13,30] 斯皮尔曼=[] dsquare=0.0 计数=0 i=0 而我

Python 斯皮尔曼秩相关-类型错误:';int';对象不可调用 studlst=['ABDIHAFITH',8,16,19,20,3,25,16,2,9],'ADAM',12,9,17,24,13,6,15,13,30] 斯皮尔曼=[] dsquare=0.0 计数=0 i=0 而我,python,python-3.x,math,typeerror,Python,Python 3.x,Math,Typeerror,我一直收到错误“TypeError:“int”对象不可调用”。对于创建矛值的行(精子秩相关)。我尝试将该行上的两个len(studlst)转换为float,但它返回相同的错误,将float替换为int。我该怎么办?谢谢 编辑: 问题源于错误的语法,应该乘以len(studlst)和括号这部分看起来有问题: len(studlst)(len(studlst)**2-1) len生成一个int,以下括号中的表达式被解析为调用 如果您打算购买产品,请使用*运算符: len(studlst)*(len

我一直收到错误“TypeError:“int”对象不可调用”。对于创建矛值的行(精子秩相关)。我尝试将该行上的两个len(studlst)转换为float,但它返回相同的错误,将float替换为int。我该怎么办?谢谢

编辑:
问题源于错误的语法,应该乘以len(studlst)和括号

这部分看起来有问题:

len(studlst)(len(studlst)**2-1)
len
生成一个int,以下括号中的表达式被解析为调用

如果您打算购买产品,请使用*运算符:

len(studlst)*(len(studlst)**2-1)

这部分看起来有问题:

len(studlst)(len(studlst)**2-1)
len
生成一个int,以下括号中的表达式被解析为调用

如果您打算购买产品,请使用*运算符:

len(studlst)*(len(studlst)**2-1)

在您的代码中,部分
(len(studlst)(len(studlst)**2-1))

计算结果为
int(某些值)
,因为
(len(studlst)
将给您一个
int
(len(studlst)**2-1)
将是一些值

因此,您将
int(some_value)
作为代码的最终产品,这意味着您将
int
视为某种函数,并使用类似的值调用它

foo(x):
通过

然后
foo(0)


这是导致问题的原因。如果要乘法,请将公式更改为
(len(studlst)*(len(studlst)**2-1))

在代码中,零件
(len(studlst)(len(studlst)**2-1))

计算结果为
int(某些值)
,因为
(len(studlst)
将给您一个
int
(len(studlst)**2-1)
将是一些值

因此,您将
int(some_value)
作为代码的最终产品,这意味着您将
int
视为某种函数,并使用类似的值调用它

foo(x):
通过

然后
foo(0)


这就是问题的原因。如果你打算乘法,然后将等式改为
(len(studlst)*(len(studlst)**2-1))

,用你自己的话来说,你认为
len(studlst)(len(studlst)**2-1)意味着什么?提示:你为什么不写
(6)(dsquare)
?这也行不通;大概你已经理解了原因。问题的根源在于我想把len(studlst)和括号相乘。用你自己的话来说,你期望len(studlst)(len(studlst)**2-1)是什么意思?
提示:你为什么不写
(6)(dsquare)
?这也行不通;想必您已经理解了原因。问题的根源在于我打算将len(studlst)和括号相乘
studlst = [['ABDIHAFITH', 8, 16, 19, 20, 3, 25, 16, 2, 9], ['ADAM', 12, 9, 17, 24, 13, 6, 15, 13, 30]

spearman = []

    dsquare = 0.0
    count = 0
    i = 0

    while i < len(studlst):
        dsquare += (studlst[i][1] - studlst[i][count+2])**2
        i += 1
        if i == len(studlst):
            count += 1
            spear = 1-((6*dsquare)/(len(studlst)(len(studlst)**2-1)))
            spearman.append(spear)
            if len(spearman) == (len(studlst[0])-2):
                break
            i = 0
            dsquare = 0