三级菜单(分别使用递归和堆栈实现)

menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}},
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                '优酷': {}
            }
        }
    },
    '上海': {},
    '广东': {
        '广州': {
            '白云': {
                '白云山': {},
                '广东外语外贸大学': {}
            },
            '番禺': {
                '广州大学城': {
                    '广东工业大学': {
                        '第二食堂': {
                            '鸡扒饭'
                        },
                        '东十三前': {
                            '情侣坡'
                        }
                    },
                    '华南理工大学': {},
                    '中山大学': {}
                }
            }
        },
        '潮汕': {
            '揭阳': {
                '揭阳技术师范学院': {},
                '揭阳理工学院(在建)': {},
            },
            '汕头': {
                '汕头大学': {}
            }
        }
    }
}

递归方法:

def tri_menu(dic):
    while True:
        for k in dic:
            print(k)
        key = input('请输入地址:').strip()
        if key == 'b' or key == 'q':
            return key
        elif key in dic.keys() and dic[key]:
            ret = tri_menu(dic[key])
            if ret == 'q':
                return 'q'


tri_menu(menu)

堆栈方法:

li = [menu]
while li:
    for key in li[-1]:
        print(key)
    k = input('请输入位置:').strip()
    if k in li[-1].keys() and li[-1][k]:
        li.append(li[-1][k])
    elif k == 'b':
        li.pop()
    elif k == 'q':
        break
    else:
        continue

猜你喜欢

转载自www.cnblogs.com/xuminzgl/p/12025375.html
今日推荐