Bonjour,
Je poursuis mon étude de graphe de relation avec le livre Data science from scratch.(voir un post un peu plus bas mais avec un sujet différent)
Le livre est en PYTHON 2 mais je suis en python 3
Le problème se situe à la dernière ligne du programme.Une fonction qui fait appel à deux autres fonctions
Voici le message erreur très simplifié

NameError: name 'other_use' is not defined
Ce sont les deux lignes

if not_the_same(user,foaf)\
and not_friends(user,foaf))

qui créent le pb car si on les enlève ,la fonction counter produit bien un résultat.
Apparement le passage de paramètres ne se fait pas

Merci d'avance à ceux qui pourront m'aiguiller dans le passage de paramètres

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
 
from collections import Counter
 
def number_of_friends(user):
    global a
    """how many friends does_user_have?"""
    a= len(user["friends"])
    print("afonction",a)
    return len(user["friends"])
 
 
 
def friends_of_friends_ids_bad(user):
#foaf est un raccourci pour friend of a friend
    return [foaf["id"]for friend in user["friends"]for foaf in friend["friends"]]
 
def not_the_same(user,other_user):
    #deux users ne sont pas les m^mes s'ils ont des 'id' différents
    return user["id"] != other_user["id"]
 
def not_friends(user,other_user):
    #other_use is not a friend s'il n'est pas dans user["friends"]
    #c'est le cas s'il n'est pas le même que tous les gens de user["friends"]
    return all(not_the_same(friend,other_user) for friend in user["friends"])
 
def friends_of_friends_ids(user):
    return Counter(foaf["id"]\
                    for friend in user["friends"]\
                    for foaf in friend["friends"]\
                    if not_the_same(user,foaf)\
                    and not_friends(user,foaf))                  
#pour chacun de mes amis
#compte leurs amis                  
#qui ne sont pas moi                  
#et qui ne sont pas mes amis
 
#Programme                     
##########################################################################
users=[{"id":0,"name":"Hero"},
       {"id": 1,"name":"Dunn"},
       {"id":2,"name":"Sue"},
       {"id":3,"name":"Chi"},
       {"id":4,"name":"Thor"},
       {"id":5,"name":"Clive"},
       {"id":6,"name":"Hicks"},
       {"id":7,"name":"Devin"},
       {"id":8,"name":"Kate"},
       {"id":9,"name":"Klein"}
 
 
       ]
 
friendships=[(0,1),(0,2),(1,2),(1,3),(2,3),(3,4),
             (4,5),(5,6),(5,7),(6,8),(7,8),(8,9)]
 
#creation d'une liste d'amis à partir de users
for user in users:
 
 
    user["friends"]=[]
 
#les amis sont créés à partir de fiendships
 
for i,j in friendships:
 
    #on lit les tuples
    users[i]["friends"].append(users[j])#add i as a friend of j
    users[j]["friends"].append(users[i])#add j as a friend of i
 
#test des fonctions
 
print("foaf=",friends_of_friends_ids_bad(users[0]))
 
 
#fonction qui pose des problèmes de passage de paramètres
print("fonct",friends_of_friends_ids(users[3]))