三級菜單—遞歸、堆棧

數據

menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '網易': {},
                'google': {}
            },
            '中關村': {
                '愛奇藝': {},
                '汽車之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '網易': {},
                '北航': {},
            },
            '天通苑': {},
            '回龍觀': {},
        },
        '朝陽': {},
        '東城': {},
    },
    '上海': {
        '閔行': {
            "人民廣場": {
                '炸雞店': {}
            }
        },
        '閘北': {
            '火車戰': {
                '攜程': {}
            }
        },
        '浦東': {},
    },
    '山東': {},
}

1.遞歸實現

def tree_m(menu):
    while True:
        for key in menu:
            print(key)
        inp = input("請輸入<B返回上一層,Q退出>:")
        if inp.upper() == "Q":
            return "Q"
        if inp.upper() == "B":
            return "B"
        elif menu.get(inp):
            ret = tree_m(menu[inp])
            if ret == "Q":
                return "Q"
tree_m(menu)

2.堆棧

lst = [menu]
while lst:
    for key in lst[-1]:
        print(key)
    inp = input("請輸入<B返回上一層,Q退出>:")
    if inp.upper() == "Q":
        break
    elif inp.upper() == "B":
        lst.pop()
    elif lst[-1].get(inp):
        lst.append(lst[-1][inp])

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章