三级菜单练习
数据结构:
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车站':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
需求:
- 可依次选择进入各子菜单
- 可从任意一层往回退到上一层
- 可从任意一层退出程序
小白版
menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} } }, '闸北':{ '火车站':{ '携程':{} } }, '浦东':{ }, }, '山东':{ '济南':{}, '青岛':{} } } print("在任意一层输入“q”退出,输入“b”返回上一层(除第一层外)") while True: for i in menu: print(i) choice = input("请输入所要进入地区:").strip() if not choice:continue # 输入不为空 if choice in menu: while True: for i in menu[choice]: print(i) choice2 = input("请输入进入地区:").strip() if not choice2:continue if choice2 in menu[choice]: while True: for i in menu[choice][choice2]: print(i) choice3 = input("请输入进入地区:").strip() if not choice3:continue if choice3 in menu[choice][choice2]: while True: for i in menu[choice][choice2][choice3]: print(i) choice_back = input("最后一层!返回还是退出?") if choice_back == "q": exit() elif choice_back == 'b': break elif choice3 == 'b': break elif choice3 == "q": exit() elif choice2 == 'b': break elif choice2 == "q": exit() elif choice == "q": exit()
进阶版
menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} } }, '闸北':{ '火车站':{ '携程':{} } }, '浦东':{ }, }, '山东':{ '济南':{}, '青岛':{} } } conj = menu lis = [] while True: for i in conj: print(i) choice = input("请选择地区:").strip() if not choice:continue if choice in conj: lis.append(conj) conj = conj[choice] elif choice == "b": if len(lis) == 0: print('\033[41;1m 已回到顶层\033[0m') else: conj = lis.pop() elif choice == "q": exit()