TypeError:不支持的操作数类型 - :' float'和' NoneType'蟒蛇

时间:2014-04-12 23:35:24

标签: python

有谁知道为什么我会收到这样的错误?!我真的很感激,如果你这样做,我是新手,并试图学习,但我真的陷入了python的细节! 这是我得到的错误:

eError: unsupported operand type(s) for -: 'float' and 'NoneType'

 for test in test_set:
 person_id = test['person_id']
 place_id = test['place_id']
 rating = test['rating']
 predicted_rating = simple_nn(person_id, place_id, 5)
 #difference =  (rating- predicted_rating)
 sq_err = (rating- predicted_rating) * (rating - predicted_rating)

 sq_err_sum = sq_err 

 sq_err_sum = sq_err_sum + sq_err



 rmse = math.sqrt(sq_err_sum/5)
 print rmse

2 个答案:

答案 0 :(得分:6)

根据您提供的内容判断,错误是我的结论。

您使用-操作数的唯一地方是两点

sq_err = (rating- predicted_rating) * (rating - predicted_rating)

因为错误状态'float' and 'NoneType'我们可以得出结论:ratingfloat类型而predicted_ratingNoneType

您将predicted_rating定义为:

predicted_rating = simple_nn(person_id, place_id, 5)

所以这意味着函数simple_nn的代码中某处你没有返回任何内容。也许如果你使用的条件你没有评估每个结束路径,那么函数就会返回。

例如......所有这些函数都返回None类型。

def example1():
    pass

def example2():
    return

def example3(a = True, b  = True):
    if not a:
        return True
    elif not b:
        return False

注意在最后一个例子中,有一个路径,如果满足大小写,则两者都没有,因此它可以返回None

答案 1 :(得分:-1)

您也可以使用导入部门

  

来自_ _ future _ _ import division

在同样的情况下它适用于我