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])) |
Partager