1 menu_list = { 2 '北京':{ 3 '昌平':{ 4 '回龙观':{ 5 '和谐家园':{}, 6 '矩阵小区':{}, 7 '北店家园':{} 8 }, 9 '沙河':{ 10 '北街家园1区':{}, 11 '北街家园2区':{}, 12 '北师大附小':{} 13 } 14 }, 15 '海淀':{ 16 '西二旗':{ 17 '云端时代':{}, 18 '百度':{}, 19 '软件园':{} 20 }, 21 '西三旗':{ 22 '上地五街':{}, 23 '上地三街':{}, 24 '方正集团':{} 25 } 26 } 27 }, 28 '邯郸':{ 29 '丛台区':{ 30 '黄粱梦':{ 31 '东官庄':{}, 32 '王李庄':{} 33 }, 34 '沙河':{ 35 '北街家园1区1':{}, 36 '北街家园2区2':{}, 37 '北师大附小3':{} 38 } 39 }, 40 '复兴区':{ 41 '永年':{ 42 '云端时代1':{}, 43 '百度2':{}, 44 '软件园3':{} 45 }, 46 '肥乡':{ 47 '上地五街1':{}, 48 '上地三街2':{}, 49 '方正集团3':{} 50 } 51 } 52 }, 53 } 54 map_list = [] 55 cur_layer_pos = 0 56 cur_layer_keys = [] 57 cur_layer_keys_values = [] 58 is_exit = False 59 is_not_next = True 60 while not is_exit: 61 if is_not_next: 62 if cur_layer_pos == 0: 63 cur_layer_keys = menu_list.keys() 64 else: 65 cur_layer_keys = map_list[cur_layer_pos - 1][1].keys() 66 67 if len(cur_layer_keys) > 0: 68 is_not_next = True 69 print('可以进入的下一级菜单显示:', list(cur_layer_keys)) 70 else: 71 print("已经到菜单底部啦,只能输入p返回上一级菜单") 72 cur_menu_name = input('请输入菜单名:') 73 if cur_menu_name.lower() == 'p': 74 if cur_layer_pos > 0: 75 map_list.pop() 76 cur_layer_pos -= 1 77 is_not_next = True 78 else: 79 print('已经到顶级菜单啦.') 80 elif cur_menu_name.lower() == 'q': 81 is_exit = True 82 elif cur_menu_name in cur_layer_keys: 83 map_list.append([cur_menu_name, menu_list[cur_menu_name] if cur_layer_pos == 0 else map_list[cur_layer_pos - 1][1][cur_menu_name]]) 84 cur_layer_pos += 1 85 else: 86 if len(cur_layer_keys) > 0: 87 print("请输入正确的菜单名称...") 88 else: 89 is_not_next = False 90 print("已经到菜单底部啦,只能输入p返回上一级菜单") 91 print('当前所在的位置:', [_map[0] for _map in map_list]) 92
多级菜单的要求如下:
1. 可以依次进入子菜单
2. 任意级菜单均可返回上一级
3. 任意级菜单均可退出程序
主要是锻炼列表和字典数据类型
三级菜单实现可以如下:
云腾软件