【问题标题】:Recursive function in python using n inputpython中使用n输入的递归函数
【发布时间】:2021-06-13 10:11:21
【问题描述】:

我想做一个程序,输出如下

我对@9​​87654322@ 循环感到困惑,我的代码现在看起来像这样

def menu(n):
    return append(n, 0, 0)

def append(n, parent, label):

    if n == 0:
        return 1
    elif n > 0:
        id = (n-n)+1
        parent = input("parent :")
        label = input("label :")
        print(id)
        print(parent)
        print(label)
        menu(n-1)

menu(
    int(input())
)

谁能帮助我如何使用 n 输入进行输出?

【问题讨论】:

    标签: python loops recursion


    【解决方案1】:

    这是一个从代码列表中读取行的演示。大概,您可以弄清楚如何从文件中读取。

    lines = [
        '8',
        '1 0 menu_1',
        '2 0 menu_2',
        '3 1 menu_3',
        '4 1 menu_4',
        '5 2 menu_5',
        '6 3 menu_6',
        '7 0 menu_7',
        '8 2 menu_8',
    ]
    
    toplevel = []
    index = {}
    
    for line in lines[1:]:
        idx, parent, name = line.strip().split()
        new = [name, []]
        index[idx] = new
        if parent == '0':
            toplevel.append( new )
        else:
            pitem = index[parent]
            pitem[1].append( new )
    
    def print_menu( level, items ):
        for item in items:
            print( ' '*level*4 + item[0] )
            print_menu( level+1, item[1] )
    
    print_menu( 0, toplevel )
    

    输出:

    [timr@Tims-Pro:~/src]$ python x.py
    menu_1
        menu_3
            menu_6
        menu_4
    menu_2
        menu_5
        menu_8
    menu_7
    [timr@Tims-Pro:~/src]$ 
    

    【讨论】:

    • thx bruh,但是当我想让用户输入输入时如何不使用列表
    【解决方案2】:

    根据我对您的代码的理解,我尝试将它应用到不同的代码中。这是我的简单建议:

    ndata = int(input("total of input: "))
    data = {'id': [], 'parent': [], 'label': []}
    for i in range(ndata):
        parent = int(input("parent: "))
        label = input("label: ")
        data['id'].append(i+1)
        data['parent'].append(parent)
        data['label'].append(label)
    
    # print data
    print('### print data ###')
    print(f'total of data: {ndata}')
    for i in range(len(data['id'])):
        print(data['id'][i], data['parent'][i], data['label'][i])
    

    如果您在终端上运行它,您可以输入数据并打印输出。 这是我的情况:

    total of input: 8
    parent: 0
    label: menu_1
    parent: 0
    label: menu_2
    parent: 1
    label: menu_3
    parent: 1
    label: menu_4
    parent: 2
    label: menu_5
    parent: 3
    label: menu_6
    parent: 0
    label: menu_7
    parent: 2
    label: menu_8
    ### print data ###
    total of data: 8
    1 0 menu_1
    2 0 menu_2
    3 1 menu_3
    4 1 menu_4
    5 2 menu_5
    6 3 menu_6
    7 0 menu_7
    8 2 menu_8
    

    【讨论】:

    • 这很好,但我想在循环中使用递归函数
    猜你喜欢
    • 2016-05-06
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 2013-02-23
    • 1970-01-01
    相关资源
    最近更新 更多