一道關於三級菜單的實例

實現目標:
逐級的訪問菜單中的數據,並且可以返回上一級和退出。
三級菜單爲:

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