menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'網易': {},
'google': {}
},
'中關村': {
'愛奇藝': {},
'汽車之家': {},
'優酷': {}
},
'上地': {
'百度': {}
}
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {}
},
'天通苑': {},
'回龍觀': {}
},
'朝陽': {},
'東城': {}
},
'上海': {
'閔行': {
'人民廣場': {
'炸雞店': {}
}
},
'閘北': {
'火車站': {
'攜程': {}
}
},
'浦東': {}
},
'山東': {}
}
current_menu = menu
path_menu = []
while True:
print("菜單(menu)".center(15, '-'))
# 將菜單字典關鍵字轉化為列表類型,便于給菜單加上數字編號,方便用戶輸入
current_key_list = list(current_menu.keys())
for index, i in enumerate(current_key_list):
print("%s. %s".center(15) % (index, i))
# 對用戶輸入字符進行校驗和容錯處理(意外輸入空格或回車不報錯)
user_choice = input("請輸入菜單編號,返回按b,退出按q:").strip()
if user_choice.isdigit() and 0 <= int(user_choice) < len(current_key_list):
# 根據用戶輸入編號反向查詢字典的關鍵字
current_key = current_key_list[int(user_choice)]
if current_key in current_menu:
# 根據用戶進入的菜單層級,保存歷史菜單路徑并進行下一層菜單的循環打印
path_menu.append(current_menu)
current_menu = current_menu[current_key]
elif user_choice.casefold() == 'b':
if current_menu != menu:
current_menu = path_menu.pop()
else:
print("----已經回到主菜單----!")
elif user_choice.casefold() == 'q':
exit()
轉載于:https://www.cnblogs.com/eric99/p/9992117.html