如果递归循环失败,它是否不会继续到下一个项目?

2024-04-29 19:02:03 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我的作业快做完了,但只有在我弄清楚原因之后 当我递归地调用它时,这个循环不会继续。在

我将以一个名字作为输入,并返回他的孩子和父亲作为输出。在

例如,坎基的孩子是撒旦、马兰、乌兰、尤吉语
撒旦的孩子是本和艾伦
马兰没有孩子,我的树看起来像这样:

T=["Kanky",["satan",["ben","ian"],"Alan"],"malan",["yugi","yuppi"]]

我的代码:

^{pr2}$

Tags: 代码作业孩子原因名字benalan父亲
1条回答
网友
1楼 · 发布于 2024-04-29 19:02:03

老实说,我不想分析你的代码来寻找问题所在,但我知道如何正确处理。在

看看这个:

def find_the_man( T, name,  p = None):
    r = False 
    for i in T: 
        if type( i ) == list: 
            r = find_the_man( i, name, T[0] )
            if r:
               break
        elif i == name:
            return ( p, [ i[0] if type(i) == list else i for i in T[ 1: ] ] ) if T.index(i) == 0 else ( T[0], None )
    return r 

T= [ "Kanky", [ "satan", [ "ben", "ian" ], "Alan" ], "malan", [ "yugi", "yuppi" ] ] 
# function return tuple ( parent, list_of_children )
find_the_man( T, "Kanky" )  # (None, ['satan', 'malan', 'yugi'])
find_the_man( T, "satan" )  # ('Kanky', ['ben', 'Alan'])
find_the_man( T, "ben" )    # ('satan', ['ian'])
find_the_man( T, "malan" )  # ('Kanky', None)
find_the_man( T, "yugi" )   # ('Kanky', ['yuppi'])
find_the_man( T, "yuppi" )  # ('yugi', None)
find_the_man(T, "stranger" )# False

相关问题 更多 >