多级菜单的前进与后退

menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车战': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
}
#
版本1

def get_menu(menu):
ret=True
while ret:
for i in menu.keys():
print(i)
flag=True
while flag:
key = input('>>>')
if menu.get(key):
dic=menu[key]
ret=get_menu(dic)
flag=False
elif key.upper()=='B':
flag = False
return True
elif key.upper()=='Q':
print("程序结束")
flag = False
return False
else:
print('再次输入')
continue
get_menu(menu)



#版本2
def menu_func(menu):
while True:
for name in menu:
print(name)
key = input('>>>').strip() # 北京
if menu.get(key):
dic = menu[key]
flag = menu_func(dic) # menu_func(menu['北京'])
if not flag: return False
elif key.upper() == 'B': return True
elif key.upper() == 'Q': return False
原文地址:https://www.cnblogs.com/diracy/p/13338976.html