python中的类型错误

python中的类型错误,python,types,absolute-value,Python,Types,Absolute Value,我有一个int列表(hitTableWord),我试图在整个列表的数字绝对值上加1,我一直在python中得到这个错误消息:metric=metric+1/(abs(metricNumber)) TypeError:不支持+:“type”和“float”的操作数类型。公制已初始化为:公制=0 问题是我是一个新手程序员,不知道这意味着什么 for a in range (0, len(hitTableWord)): output_file.write('Hit Word: '+

我有一个int列表(hitTableWord),我试图在整个列表的数字绝对值上加1,我一直在python中得到这个错误消息:metric=metric+1/(abs(metricNumber)) TypeError:不支持+:“type”和“float”的操作数类型。公制已初始化为:公制=0

问题是我是一个新手程序员,不知道这意味着什么

 for a in range (0, len(hitTableWord)):
         output_file.write('Hit Word: '+ str(hitTableWord[a]) +' ' + str(hitTableNear[a])+ ', ')
         metric = metric + 1/(abs(hitTableWord[a]))

任何帮助都将不胜感激。像往常一样,我的问题肯定是一些可笑的简单,我只是不知道。因此,感谢您的耐心。

似乎
metric
是您在某个地方定义的一个类,而不是一个实例-例如,您有:

class metric(object):
    pass
您需要调用
metric()
来获取它的实例。请注意,如果
metric
没有定义
\uuuuuuuuuuuuuuuuuuuuuuuuuu
,您将继续得到一个非常类似的错误

同样,您可能无意中执行了以下操作:

metric = someclass
你的意思是:

metric = someclass()
不管是哪种方式,错误消息都是说
metric
包含一个类,而Python不知道如何将类添加到float中(或者,在这个问题上,添加到任何内容)

此外:

是在Python中通常不需要执行的操作。在这里使用它是因为您需要访问
hitTableWord
hitTableNear
的相关元素-您可以更习惯地这样做:

for word, near in zip(hitTableWord, hitTableNear):

我假设,
hitTableWord
只包含数字,您能看看在哪里定义度量吗?该错误意味着您试图将两种不同类型的变量添加到一起,Python无法对给定类型执行此操作,类似于无法将字符串添加到整数或将整数连接到字符串

例如:

5 + "abc" 
在这里,加号用作算术运算符,这不适用于字符串

"abc" + 5  

在这里,加号表示字符串连接,这对整数不起作用。

您使用0初始化该度量。但我想情况并非如此。在
metric
变量中有一个类型为
type
的值。这就是这里的问题。

怎么样

from itertools import izip

metric = 0.
for tw,tn in izip(hitTableWord, hitTableNear):
    output_file.write("Hit Word: {} {}".format(tw,tn))
    metric += 1./abs(tw)

在您的示例中,
度量值
未初始化。“这是什么?”威尔说。事实上,将
()
像这样的赋值去掉可能比
类度量更容易出错。我已经更新了我的答案,以包括该案例。谢谢你的帮助。此外,有关循环的信息非常有用。谢谢,伊戈尔,你说得对。我把它定义为一个浮动。现在可以用了谢谢
from itertools import izip

metric = 0.
for tw,tn in izip(hitTableWord, hitTableNear):
    output_file.write("Hit Word: {} {}".format(tw,tn))
    metric += 1./abs(tw)