一道关于三级菜单的实例

实现目标:
逐级的访问菜单中的数据,并且可以返回上一级和退出。
三级菜单为:

menu  = {
    "山东":{
        "青岛":{
            "市南":{},
            "市北":{},
            "城阳":{}
        },
        "济南":{
            "长清":{},
            "章丘":{},
            "莱芜":{}
        },
        "淄博":{
            "张店":{},
            "桓台":{},
            "周村":{}
        }
    },
    "湖北":{
        "武汉":{
            "111":{},
            "222":{},
            "333":{}
        },
        "黄冈":{
            "444":{},
            "555":{},
            "666":{}
        },
        "武昌":{
            "777":{},
            "888":{},
            "999":{}
        }
    },
    "上海":{

    }
}

方法一:递归实现

def view(dic):
    while True:
        for i in dic:print(i)
        k = input("请输入一个地方:")
        if k == "b" or k == "q": return k
        if k in dic.keys() and dic[k]:
            ret = view(dic[k])
            if ret == "q":return "q"
view(menu)

方法二:堆栈实现

st = [menu]
while st:
    dic = st[-1]
    for i in dic:print(i)
    k = input("请输入:")
    if k in dic.keys() and dic[k]:
        st.append(dic[k])
    elif k == "b":st.pop()
    elif k == "q":break
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章