打印家族树,直到某个级别| Python 3
我正在努力使用递归函数来打印家族树,直到某个“深度/级别”。打印家族树,直到某个级别| Python 3
我已经定义的类“人”与每个人都有一些后代(S),所以可以说:
>>> george.children [<__main__.Person object at 0x000002C85FB45A58>]
>>> george.name
'George'
我要打印的家庭树的方式,每一代由4分离空格,例如:
>>> family_tree(george, level = 2) George
Michael
Juliet
Peter
Mary
乔治是0级,那么他的两个儿子都是1级,等
你请有任何想法如何写这个使用递归?我将不胜感激。
回答:
您可以使用递归。在递归的每个更深层次上,您应该再生成4个空格。所以为了这个目的,你可以传递一个参数depth
,这个参数在每次递归调用时都会增加。
这里是你如何能做到这一点:
# You'll have a class like this: class Person:
def __init__(self, name):
self.name = name
self.children = []
def addChild(self, child):
self.children.append(child)
return self # to allow chaining
# The function of interest:
def family_tree(person, level = 2):
def recurse(person, depth):
if depth > level: return
print (" " * (4 * depth) + person.name)
for child in person.children:
recurse(child, depth+1)
recurse(person, 0)
# Sample data
george = Person("George").addChild(
Person("Michael").addChild(
Person("Juliet").addChild(
Person("don't show me")
)
)
).addChild(
Person("Peter").addChild(
Person("Mary")
)
)
# Call the function
family_tree(george)
以上是 打印家族树,直到某个级别| Python 3 的全部内容, 来源链接: utcz.com/qa/258671.html