数据结构:
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()