打印家族树,直到某个级别| 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

回到顶部