0

我有一个整数列表(hitTableWord),我试图在整个列表的数字的绝对值上加 1,并且在 python 中不断收到此错误消息:metric = metric + 1/(abs(metricNumber)) TypeError : + 不支持的操作数类型:'type' 和 'float'。metric 被初始化为:metric = 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]))

任何帮助,将不胜感激。像往常一样,我的问题肯定是我不知道的简单得可笑的事情。所以感谢大家的耐心。

4

4 回答 4

1

似乎metric是您在某处定义的类,而不是实例-即,您有类似的东西:

class metric(object):
    pass

您需要调用metric()以获取它的实例。metric请注意,如果未定义,您将继续收到非常相似的错误__add__

同样,您可能无意中做了:

metric = someclass

当你的意思是:

metric = someclass()

无论哪种方式,错误消息都说metric包含一个class,并且 Python 不知道如何将类添加到浮点数(或者,就此而言,添加到任何东西)。

还:

for a in range (0, len(hitTableWord)):

是你通常不需要在 Python 中做的事情。在这里您使用它是因为您需要访问两者的相关元素hitTableWord并且hitTableNear- 您可以更惯用地执行此操作:

for word, near in zip(hitTableWord, hitTableNear):
于 2012-06-15T13:22:59.607 回答
0

你用 0 初始化这个指标。但我想不是这样的。您typemetric变量中有一个类型的值。这就是问题所在。

于 2012-06-15T13:23:37.850 回答
0

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

举个例子:

5 + "abc" 

在这里,加号用作算术运算符,这不适用于字符串。

"abc" + 5  

在这里,加号表示字符串连接,这不适用于整数。

于 2012-06-15T13:23:07.867 回答
0

怎么样

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)
于 2012-06-15T13:25:13.423 回答