我在这个问题上遇到了一些麻烦:
考虑一个地址簿,除地址外,还要跟踪 某人的朋友。地址簿允许查询朋友的朋友 (就像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):
答案 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