实现目标:
逐级的访问菜单中的数据,并且可以返回上一级和退出。
三级菜单为:
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