Python社交地址簿

时间:2016-06-17 07:30:25

标签: python

我在这个问题上遇到了一些麻烦:

  

考虑一个地址簿,除地址外,还要跟踪   某人的朋友。地址簿允许查询朋友的朋友   (就像LinkedIn做连接一样):1级的朋友是   直接的朋友,2级的朋友是朋友的朋友,等等。   没有0级的朋友。

我该如何开始?特别是'度'部分。

这是我到目前为止所做的:

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 个答案:

答案 0 :(得分:0)

考虑创建一个包含列表的类,该列表包含该人的所有直接朋友。那么你所做的就是在找到某些程度的朋友时搜索列表,例如2级朋友是任何朋友,不是他或他的任何直接朋友,而是另一个人。继续将这些人添加到“使用过的朋友”列表中,以确保您不会加倍。 这方面的一个例子是:

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

这只是一个帮助您入手的示例。还可以考虑在互联网上查找课程:https://docs.python.org/3/tutorial/classes.html