云腾软件

祥云工作室 QQ:252895542

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  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 
View Code

多级菜单的要求如下:

1. 可以依次进入子菜单

2. 任意级菜单均可返回上一级

3. 任意级菜单均可退出程序

主要是锻炼列表和字典数据类型

三级菜单实现可以如下:

http://www.cnblogs.com/bg0131/p/6416816.html

posted on 2018-04-04 14:29  云腾  阅读(178)  评论(0编辑  收藏  举报