0
from math import sqrt
def sim_distance(prefs,person1,person2):
     si={}
     for item in prefs[person1]:
          if item in prefs[person2]:
               si[item]=1
     if len(si)==0: return 0
     sum_of_squares=sum([ pow ( prefs[person1] [item] - prefs[person2][item],2)
                  for item in prefs[person1] if item in prefs[person2]])
     return 1/(1+sqrt(sum_of_squares))

reload(recommendations)
recommendations.sim_distance(critics,'Lisa Rose','Gene Seymour')

で、エラーです

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    recommendations.sim_distance(critics,'Lisa Rose','Gene Seymour')
NameError: name 'critics' is not defined

批評家はカスタム配列です

4

2 に答える 2

1

これは名前空間の再読み込みとは関係ありません。あなたは単に を定義していませんcritics

于 2012-04-14T16:19:17.933 に答える
0

これはおそらくスコープの問題のようです。別の関数内で批評家を定義している場合、批評家はその関数内にのみ存在します。ここでは、関数のメイン スコープで批評家を参照しているため、それを作成する関数から批評家を返すか、(理想的ではありませんが) 最初にグローバル スコープ内で定義する必要があります。

def initCritics():
    critics = []
    # make some critics

    return critics

critics = initCritics()

recommendations.sim_distance(critics,'Lisa Rose','Gene Seymour')
于 2012-04-14T16:24:19.250 に答える