现在有如下城市选择菜单
- 河北
- 石家庄
- 长安区
- 新华区
- 保定
- 莲池区
- 涿州
- 石家庄
- 北京
- 朝阳
- 三里屯
- 双井
- 海淀
- 中关村
- 西北旺
- 朝阳
- 浙江
- 杭州
- 滨江
- 余杭
- 宁波
- 海瞩
- 江北
- 杭州
需求为
- 用户输入名字,进入下一级菜单
- 用户输入back,返回上级菜单
- 用户输入q,退出该功能
递归
递归实现的方法
menu = {
"河北": {
"石家庄": {
"长安区": {},
"新华区": {}
},
"保定": {
"莲池区": {},
"涿州": {}
}
},
"北京": {
"朝阳": {
"三里屯": {},
"双井": {}
},
"海淀": {
"中关村": {},
"西北旺": {}
}
},
"浙江": {
"杭州": {
"滨江": {},
"余杭": {}
},
"宁波": {
"海瞩": {},
"江北": {}
}
}
}
def select_menu(dic_menu):
while 1:
for one in dic_menu:
print(one)
msg = input(">>>").strip()
if msg.lower() == "back": return False
elif msg.lower() == "q": return True
elif dic_menu.get(msg):
flag = select_menu(dic_menu[msg])
if flag: return True
栈
用栈来实现,这种实现方式很重要,掌握后可以用在很多场景中
def select_menu(dic_menu):
dic_list = [dic_menu]
while dic_list:
tmp = dic_list[-1]
for key in tmp:
print(key)
msg = input(">>>").strip()
if msg.lower() == "back": dic_list.pop()
elif msg.lower() == "q": break
elif tmp.get(msg):
dic_list.append(tmp[msg])