1 #!/usr/bin/env python
2 #coding=utf-8
3 # 需求:
4 # 可依次选择进入各子菜单
5 # 可从任意一层往回退到上一层
6 # 可从任意一层退出程序
7 # 所需新知识点:列表、字典
8 import sys
9 menu = {
10 '北京':{
11 '海淀':{
12 '五道口':{
13 'soho':{},
14 '网易':{},
15 'google':{}
16 },
17 '中关村':{
18 '爱奇艺':{},
19 '汽车之家':{},
20 'youku':{},
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 }
47 },
48 '浦东':{},
49 },
50 '山东':{},
51 }
52 #控制停留在第一层
53 while True:
54 print('='*10+'省份及直辖市'+'='*10)
55 for key in menu.keys(): #打印第一层key(北京、上海、山东)
56 print(key)
57 choice = input("请输入想查看的地域('q'or'Q'退出):").strip()
58 if choice in menu.keys():
59 #控制停留在第二层
60 while True:
61 print('='*20)
62 print("%s下面的市(区)有:"%choice)
63 for key in menu[choice].keys(): #打印第二层key(海淀...)
64 print(key)
65 choice1 = input("请输入想查看的区域(输入‘q’or'Q'退出;输入‘b’or‘B’返回上级):").strip()
66 if choice1 in menu[choice].keys():
67 #控制停留在第三层
68 while True:
69 print('=' * 20)
70 print("%s下面的区域有:" % choice1)
71 for key in menu[choice][choice1].keys(): #打印第三层key(五道口...)
72 print(key)
73 choice2 = input("请输入想查看的街道(输入‘q’or'Q'退出;输入‘b’or‘B’返回上级):").strip()
74 if choice2 in menu[choice][choice1].keys():
75 #控制停留在第四层
76 while True:
77 print('=' * 20)
78 print("%s下面的企业有:" % choice2)
79 for key in menu[choice][choice1][choice2].keys(): #打印第四层key(sohu...)
80 print(key)
81 choice3 = input("输入‘q’or'Q'退出;输入‘b’or‘B’返回上级:").strip()#随时退出
82 if choice3 == 'q' or choice3 == 'Q':
83 sys.exit(0)
84 elif choice3 == 'b' or choice3 == 'B':#返回上层
85 break
86 else:
87 print("无效的输入...")
88 elif choice2 == 'b' or choice2 == 'B':#返回上层
89 break
90 elif choice2 == 'q' or choice2 == 'Q':#随时退出
91 sys.exit(0)
92 else:
93 print("无效的输入...")
94 elif choice1 == 'b' or choice1 == 'B':#返回上层
95 break
96 elif choice1 == 'q' or choice1 == 'Q':#随时退出
97 sys.exit(0)
98 else:
99 print("无效的输入...")
100 elif choice == 'q' or choice == 'Q':#随时退出
101 sys.exit(0)
102 else:
103 print("无效地址...")