2015-07-20 12 views
-4

Я новичок в программировании на Python, и я написал модуль «рекомендации»:Не удается загрузить модуль Python

from math import sqrt 

# A dictionary of movie critics and their ratings of a small set of movies 
critics = { 
    'Lisa Rose': { 
     'Lady in the Water': 2.5, 
     'Snakes on a Plane': 3.5, 
     'Just My Luck': 3.0, 
     'Superman Returns': 3.5, 
     'You, Me and Dupree': 2.5, 
     'The Night Listener': 3.0}, 
    'Gene Seymour': { 
     'Lady in the Water': 3.0, 
     'Snakes on a Plane': 3.5, 
     'Just My Luck': 1.5, 
     'Superman Returns': 5.0, 
     'You, Me and Dupree': 3.5, 
     'The Night Listener': 3.0}, 
    'Michael Phillips': { 
     'Lady in the Water': 2.5, 
     'Snakes on a Plane': 3.0, 
     'Superman Returns': 3.5, 
     'The Night Listener': 4.0}, 
    'Claudia Puig': { 
     'Snakes on a Plane': 3.5, 
     'Just My Luck': 3.0, 
     'Superman Returns': 4.0, 
     'You, Me and Dupree': 2.5, 
     'The Night Listener': 4.5}, 
    'Mick LaSelle': { 
     'Lady in the Water': 3.0, 
     'Snakes on a Plane': 4.0, 
     'Just My Luck': 2.0, 
     'Superman Returns': 3.0, 
     'You, Me and Dupree': 2.0, 
     'The Night Listener': 3.0}, 
    'Jack Matthews': { 
     'Lady in the Water': 3.0, 
     'Snakes on a Plane': 4.0, 
     'Superman Returns': 5.0, 
     'You, Me and Dupree': 3.5, 
     'The Night Listener': 3.0}, 
    'Toby': { 
     'Snakes on a Plane': 4.5, 
     'You, Me and Dupree': 1.0, 
     'Superman Returns': 4.0} 
} 

# Returns a distance-based similarity score for person1 and person2 
def sim_distance(prefs, person1, person2): 
    # Get the list of shared_items 
    si = {} 
    for item in prefs[person1]: 
     if item in prefs[person2]: 
      si[item] = 1 
    # if they have no ratings in common, return 0 
    if len(si) == 0: 
     return 0 
    # Add up the squares of all the differences 
    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 + sum_of_squares) 

Всякий раз, когда я запускаю этот модуль я сталкиваюсь эту ошибку:

Python 2.7.10 (default, May 23 2015, 09:40:32) 
[MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> reload(recommendations) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'recommendations' is not defined 
>>> 

recommendations.py также не за работой.

На самом деле, когда я пытаюсь позвонить своей функции sim_distance a возникает ошибка, которая sim_distance не определена.

+1

Это трудно сказать, что происходит, так как вмятины все перепутались. Что там в строке 1, где вы получаете ошибку? – jester112358

+0

Джин Сеймур: Возвращение Супермена - 5.0 ДЕЙСТВИТЕЛЬНО ??? – jester112358

ответ

0

Существует много проблем с вашим кодом. Основная проблема - отступы. Вы, кажется, отступаете от своего кода наугад, однако python требует очень строгий режим отступов. You can read more about it here.

Я еще долго не обращал внимания на ваш код, но он не запускался после того, как я исправил отступы.

Однако то, что я ожидаю ваша первая проблема, в том, что вы забываете импортировать модуль первым, например, так:

>>> import recommendations 
1

Я отформатированный код для вас. Он работает сейчас. Если вы поместите функцию sim_distance в файл, называемый рекомендациями.py, вы сможете его импортировать. Я не проверял, если ваш код производит правильный вывод, хотя ...

# Returns a distance-based similarity score for person1 and person2 
def sim_distance(prefs, person1, person2): 
    # Get the list of shared_items 
    si = {} 
    for item in prefs[person1]: 
     if item in prefs[person2]: 
      si[item] = 1 
    # if they have no ratings in common, return 0 
    if len(si) == 0: 
     return 0 
    # Add up the squares of all the differences 
    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 + sum_of_squares) 

и запустить

from recommendations import sim_distance 
# A dictionary of movie critics and their ratings of a small 
# set of movies 
critics = { 
    'Lisa Rose': { 
     'Lady in the Water': 2.5, 
     'Snakes on a Plane': 3.5, 
     'Just My Luck': 3.0, 
     'Superman Returns': 3.5, 
     'You, Me and Dupree': 2.5, 
     'The Night Listener': 3.0}, 
    'Gene Seymour': { 
     'Lady in the Water': 3.0, 
     'Snakes on a Plane': 3.5, 
     'Just My Luck': 1.5, 
     'Superman Returns': 5.0, 
     'You, Me and Dupree': 3.5, 
     'The Night Listener': 3.0}, 
    'Michael Phillips': { 
     'Lady in the Water': 2.5, 
     'Snakes on a Plane': 3.0, 
     'Superman Returns': 3.5, 
     'The Night Listener': 4.0}, 
    'Claudia Puig': { 
     'Snakes on a Plane': 3.5, 
     'Just My Luck': 3.0, 
     'Superman Returns': 4.0, 
     'You, Me and Dupree': 2.5, 
     'The Night Listener': 4.5}, 
    'Mick LaSelle': { 
     'Lady in the Water': 3.0, 
     'Snakes on a Plane': 4.0, 
     'Just My Luck': 2.0, 
     'Superman Returns': 3.0, 
     'You, Me and Dupree': 2.0, 
     'The Night Listener': 3.0}, 
    'Jack Matthews': { 
     'Lady in the Water': 3.0, 
     'Snakes on a Plane': 4.0, 
     'Superman Returns': 5.0, 
     'You, Me and Dupree': 3.5, 
     'The Night Listener': 3.0}, 
    'Toby': { 
     'Snakes on a Plane': 4.5, 
     'You, Me and Dupree': 1.0, 
     'Superman Returns': 4.0} 
} 

print(sim_distance(critics, "Lisa Rose", "Gene Seymour")) 
Смежные вопросы