1 menu = {
2 '北京':{
3 '海淀':{
4 '五道口':{
5 'soho':{},
6 '网易':{},
7 'google':{}
8 },
9 '中关村':{
10 '爱奇艺':{},
11 '汽车之家':{},
12 'youku':{},
13 },
14 '上地':{
15 '百度':{},
16 },
17 },
18 '昌平':{
19 '沙河':{
20 '老男孩':{},
21 '北航':{},
22 },
23 '天通苑':{},
24 '回龙观':{},
25 },
26 '朝阳':{},
27 '东城':{},
28 },
29 '上海':{
30 '闵行':{
31 "人民广场":{
32 '炸鸡店':{}
33 }
34 },
35 '闸北':{
36 '火车站':{
37 '携程':{}
38 }
39 },
40 '浦东':{},
41 },
42 '山东':{},
43 }
44
45 '''
46 1. 可依次选择进入各子菜单 # 2个变量来做字典, for 循环key
47 2. 可从任意一层往回退到上一层 # input 选择
48 3. 可从任意一层退出程序 # 退出循环
49 '''
50
51 c_menu = menu # 当前的字典 c=current
52 p_menu = [] # 通过列表来存储字典信息, P=previous
53 while True:
54 # 循环打印字典列表key
55 for key in c_menu:
56 print(key)
57 choice = input(">>>:").strip().lower() # 等待用户输入 去掉空格全部小写方便后面识别
58 if choice in c_menu: # 进入下一层
59 p_menu.append(c_menu) # 把当前层添加到列表
60 c_menu = c_menu[choice] # 当前层变为选择choice的下一层
61 elif choice == "b":
62 if p_menu:
63 c_menu = p_menu[-1]# 从列表中取到最后一个值,即循环的上一层,赋值给current_menu
64 p_menu.pop() # 删除后,保持列表不会在返回上层出错
65 elif choice == "q": break # 如果输入q,结束程序。
66 else:
67 print('错误信息,请再次选择'.center(50,'*'))
68 if not c_menu:
69 print('没有信息,请按B返回:')