1 需求:
2 可依次选择进入各子菜单
3 可从任意一层往回退到上一层
4 可从任意一层退出程序
5 所需新知识点:列表、字典
6 '''
7 '''
8 思路:
9 1、菜单是分层的,进入每一层的方法一样:
10 用一个新的字典动态的表示当前层,遍历显示当前层,输入选择,判断进入下一层
11 2、用一个列表记录父层,当判断为返回时取出再次进入
12 3、进入下一层前需要把当当前成存档父层列表中,再把当前成换成选择的子层
13 4、遍历具有层级的字典都需要注意边界问题,有没有下一层、上一层
14 5、知识点:判断语句中空就是假,字典value空、列表空等,
15 '''
16 menu = {
17 '北京':{
18 '海淀':{
19 '五道口':{
20 'soho':{},
21 '网易':{},
22 'google':{}
23 },
24 '中关村':{
25 '爱奇艺':{},
26 '汽车之家':{},
27 'youku':{},
28 },
29 '上地':{
30 '百度':{},
31 },
32 },
33 '昌平':{
34 '沙河':{
35 '老男孩':{},
36 '北航':{},
37 },
38 '天通苑':{},
39 '回龙观':{},
40 },
41 '朝阳':{},
42 '东城':{},
43 },
44 '上海':{
45 '闵行':{
46 "人民广场":{
47 '炸鸡店':{}
48 }
49 },
50 '闸北':{
51 '火车战':{
52 '携程':{}
53 }
54 },
55 '浦东':{},
56 },
57 '山东':{},
58 }
59
60
61 if __name__ == '__main__':
62 #实现动态循环
63 current_layer = menu
64 #记录父层,最后一个总是当前层的父层
65 parrent_layer = []
66 while True:
67 #遍历打印当前层,打印当前字典的keys
68 for i in current_layer:
69 print(i)
70 #获取输入
71 choice = input("请输入您的选择(返回输入b,退出输入q):").strip()
72 #判断输入的选择是否在当前层
73 if choice in current_layer:
74 #判断下一层是否为空,为空则表示已经最后一层了
75 if current_layer[choice]:
76 #进入子层前,把当前层作为父层,便于后面使用
77 parrent_layer.append(current_layer)
78 #把当前层换成进入后的子层
79 current_layer = current_layer[choice]
80 else:
81 print("已经是最后一层了!")
82 break
83
84 elif choice== 'b':
85 #如果paarent_layer为空,则表示是第一层,无父层
86 if parrent_layer:
87 current_layer = parrent_layer.pop()
88
89 elif choice== 'q':
90 break
91 else:
92 print("输入错误!")