2017-10-18 23 views
0

J'impose mes fonctions définies et aucune erreur lors de l'exécution du programme. Le problème est que rien ne se passe réellement lorsque j'essaie d'appeler une fonction.Python - N'avoir aucune erreur mais aucune donnée de retour de toute façon

from math import sqrt 

from recommendations import critics 

def sim_distance(prefs, p1, p2): 

    si = {} 
    for item in prefs[p1]: 
     if item in prefs[p2]: 
      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[p1][item] - prefs[p2][item], 2) for item in prefs[p1] if item in prefs[p2]]) 
    return 1/(1 + sqrt(sum_of_squares)) 

reload (recommendations) 
sim_distance(critics, 'Jack Matthews', 'Toby') 
+0

Comment savez-vous que rien ne se passe? Votre code n'a pas de 'print's donc il pourrait faire sa chose et ensuite se terminer .... Quelle est votre sortie attendue? – roganjosh

+0

Aussi, vous retournez quelque chose mais vous ne gardez pas la valeur que vous avez retournée. – MooingRawr

Répondre

1

Votre fonction est de retour, mais vous ne faites rien avec les données renvoyées. Vous pouvez affecter la valeur de retour à une variable x = sim_distance(...) et ensuite faire quelque chose avec cette variable. Par exemple, print(x)