我对地址簿有疑问。 以下是有关该问题的一些信息:
地址簿允许查询朋友的朋友(比如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()
你能给我一些反馈和提示来解决这个问题吗?
谢谢!