menu之多级菜单的解决方案

 1 #__author:          Pastime_Rr
 2 #__product_name:    PyCharm
 3 #__project_name:    Old-Boy
 4 #__date:            2018/1/26
 5 #__time:            21:12
 6 menu={
 7     '北京':{
 8         '朝阳':{
 9             '国贸':{
10                 'CICC':{},
11                 'HP':{},
12                 '渣打银行':{},
13                 'CCTV':{}
14             },
15             '望京':{
16                 '陌陌':{},
17                 '奔驰':{},
18                 '360':{},
19             },
20             '三里屯':{
21                 '优衣库':{},
22                 'apple':{}
23             }
24         },
25         '昌平':{
26             '沙河':{
27                 '老男孩':{},
28                 '阿泰包子':{},
29             },
30             '天通苑':{
31                 '链家':{},
32                 '我爱我家':{},
33             },
34             '回龙观':{}
35         },
36         '海淀':{
37             '五道口':{
38                 '谷歌':{},
39                 '网易':{},
40                 '搜狐':{},
41                 '搜狗':{},
42                 '快手':{},
43             },
44             '中关村':{
45                 '优酷':{},
46                 '爱奇艺':{},
47                 '汽车之家':{},
48                 '新东方':{},
49                 'QQ':{},
50             },
51         },
52     },
53     '上海':{
54         '浦东':{
55             '陆家嘴':{
56                 'CICC':{},
57                 '高盛':{},
58                 '摩根':{},
59             },
60             '外滩':{},
61 
62         },
63         '闵行':{},
64         '静安':{},
65     },
66     '山东':{
67         '济南':{
68 
69         },
70         '德州':{
71             '乐陵':{
72                 '丁务镇':{}
73             },
74             '平原':{},
75         },
76         '青岛':{},
77     },
78 }
79 
80 current_layer = menu
81 parent_layers = []#保存所有父级,最后一个元素永远都是父级
82 while True:
83     for key in current_layer:
84         print(key)
85     choice = input(">>>:").strip()
86     if len(choice) == 0:continue
87     if choice in current_layer:
88         parent_layers.append(current_layer)#在进入下一层之前,把当前层(也就是下一层父级)追加到列表中
89         #下一次循环,当用户选择b选项,就可以直接取列表的最后一个值出来...
90         current_layer = current_layer[choice]#改成了子层
91 
92     elif choice == "b":
93         if parent_layers:#空为False
94             current_layer = parent_layers.pop()#取出列表的最后一个值,它就是当前层的父级
95         else:
96             print("最后一层!")
97     else:
98         print("无此项")

 

posted on 2018-02-04 12:42  PastimeRr  阅读(223)  评论(0编辑  收藏  举报

导航