使用python

时间:2016-03-12 21:33:54

标签: python

我对地址簿有疑问。 以下是有关该问题的一些信息:

地址簿允许查询朋友的朋友(比如LinkedIn的连接):1级朋友是直接朋友,2级朋友是朋友的朋友

我尝试解决这个问题,但我仍然不知道要解决最后的步骤。

这是我的代码:

class AddressBook:
    def __init__(self):
        """Creates empty address book"""
        self.book = {}
    def addName(self, name, address):
        """Adds name to address book, with address and
        no friends"""
        self.book[name] = address
    def addFriend(self, name, friend):
        """Adds friend to the set of friends of name"""
        self.book[name] = friend
    def address(self, name):
        """Returns the address of name"""
        n=set()
        for e in self.book:
            if self.book[e] == name:
                n.add(e)
        return n
    def friends(self, name, degree):
        """Returns the set of all friends up to the specified
        degree"""
        n=set()
        for name in self.book:
            if self.book[name] == degree:
                n.add(name)
        return n

以下是一些正确的输出:

    >>>a = AddressBook()
    >>>a.addName('Ann', 34); a.addName('Bill', 62); a.addName('Barb', 95)
    >>>a.addName('Emma', 56); a.addName('Fred', 46); a.addName('Jane', 90)
    >>>a.addName('Joe', 33); a.addName('Lisa', 21); a.addName('Lucy', 18)
    >>>a.addName('Mary', 52); a.addName('Sue', 12)
    # Transitivity
    # Fred -> Barb -> Jane -> Emma -> Lisa
    # Fred -> Sue
    #                 Jane -> Mary
    >>>a.addFriend('Fred', 'Barb'); a.addFriend('Fred', 'Sue')
    >>>a.addFriend('Barb', 'Jane'); a.addFriend('Jane', 'Emma')
    >>>a.addFriend('Jane', 'Mary'); a.addFriend('Emma', 'Lisa')
    >>> a.friends('Fred', 0)
    set()
    >>> a.friends('Fred', 1)
    {'Barb', 'Sue'}
    >>> a.friends('Fred', 2)
    {'Barb', 'Jane', 'Sue'}
    >>> a.friends('Fred', 3)
    {'Mary', 'Barb', 'Jane', 'Sue', 'Emma'}
    >>> a.friends('Fred', 4)
    {'Barb', 'Emma', 'Mary', 'Lisa', 'Sue', 'Jane'}

但是,我的输出全是set()

你能给我一些反馈和提示来解决这个问题吗?

谢谢!

0 个答案:

没有答案