2016-06-17 14 views
-3

ich mit dieser Frage ein wenig Mühe habe:Python Social-Adressbuch

ein Adressbuch Betrachten wir, dass neben Adressen, jemandes Tracking von Freunden hält. Das Adressbuch ermöglicht die Abfrage von Freunden von Freunden (wie LinkedIn mit Verbindungen): ein Freund von Grad 1 ist ein direkter Freund , ein Freund von Grad 2 ist ein Freund eines Freundes, etc. Es gibt keine Freunde von Abschluss 0.

Wie soll ich das anfangen? Insbesondere der Grad-Anteil. Diese

ist das, was ich bisher:

class SocialAddressBook: 

def __init__(self): 
    """Creates empty address book""" 
    self.book = {} 

def addName(self, name, address): 
    """Adds name to address book, with address and 
    no friends""" 

def addFriend(self, name, friend): 
    """Adds friend to the set of friends of name""" 
    self.name = name 
    self.friend = friend 

def address(self, name): 
    """Returns the address of name""" 

def friends(self, name, degree): 
+1

Was haben Sie versucht? Was kannst du benutzen? Werden Sie Ihre eigene Klasse schreiben/dürfen? oder einfach nur Listen verwenden und diktieren und verwalten? – Dleep

+0

Ihre Frage erfordert mehr Details, aber denken Sie daran, dass jede Person in Ihrem Adressbuch möglicherweise eine eindeutige ID benötigt. Sie könnten eine rekursive Funktion haben, die nach Personen sucht - Person 1 hinein geben, sie übergibt dann alle Freunde dieser Person in die gleiche Funktion, bis Sie eine Person ohne Freunde erreichen ODER Sie einen maximalen Grad einstellen. Sie können zählen, wie oft Sie die Funktion aufgerufen haben, um den Grad der Freundschaft zu erhalten. – Petar

+0

Ja, ich darf Klassen benutzen – user3013760

Antwort

0

Betrachten wir eine Klasse erstellen, die eine Liste enthält, die alle direkten Freunde dieser Person enthält. Dann, was du tust, suchst du durch die Liste, wenn du bestimmte Grade von Freunden findest, z. Ein Freund von Grad 2 ist ein Freund, der nicht die Person oder einer seiner direkten Freunde ist, sondern eine andere Person. Fügen Sie diese Personen weiterhin in eine Liste "verwendeter Freunde" ein, um sicherzustellen, dass Sie nicht verdoppeln. Ein Beispiel dafür wäre:

class Person: 
    #init a friend list somewhere 
    def findDegree (self, degree): 
     usedFriends = self.friends 
     #example var name is friends 
     currentList = self.friends 
     for i in range(2, degree + 1): 
      #get friends from friend list e.g. 
      newList = [] 
      for j in currentList: 
       #add friends while making sure not double ups using usedList 
       for k in j.friends: 
        if k in usedFriends: 
         continue 
        newList.append(k) 
      for j in newList: 
       usedFriends.append(j) 
      currentList = newList[:] 
      #iterate 
     return currentList 

Dies ist nur ein Beispiel, Ihnen zu helfen off starten. Denken Sie auch nach Nachschlagen Klassen im Internet: https://docs.python.org/3/tutorial/classes.html