python中使用n输入的递归函数

Posted

技术标签:

【中文标题】python中使用n输入的递归函数【英文标题】:Recursive function in python using n input 【发布时间】: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 输入进行输出?

【问题讨论】:

【参考方案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

【讨论】:

这很好,但我想在循环中使用递归函数

以上是关于python中使用n输入的递归函数的主要内容,如果未能解决你的问题,请参考以下文章

python函数 之 提升Python效率之使用循环机制代替递归函数

python中简单的递归

python中的递归thribonacci函数[关闭]

python入门五(函数)5-2 python中递归函数

Python以递归方式返回n个列表的出现,无需切片/深度复制或内置函数

关于python递归函数怎样理解