1 # encoding: utf-8
2
3 ################################################
4 # Task Name: 三级菜单 #
5 # Description:可依次选择进入各子菜单 #
6 # 可从任意一层往回退到上一层 #
7 # 可从任意一层退出程序 #
8 # ##############################################
9
10 menu = {
11 '北京': {
12 '海淀': {
13 '五道口': {
14 'soho': {},
15 '网易': {},
16 'google': {}
17 },
18 '中关村': {
19 '爱奇艺': {},
20 '汽车之家': {},
21 'youku': {},
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
54
55 prompt = "请输入菜单名,进入子菜单\n 输入'b'回到上级菜单\n 输入'q'退出程序:"
56 current_menu = menu # 当前菜单
57 parents_menu = [] # 父菜单
58
59
60 while True:
61 if len(current_menu) == 0:
62 print('当前菜单为最底层')
63 for i in current_menu:
64 print('菜单-->', i)
65 choice = input(prompt).strip()
66 if choice in current_menu:
67 parents_menu.append(current_menu) # 记录父菜单列表
68 current_menu = current_menu[choice] # 当前菜单变为原菜单的子菜单
69 elif choice == 'b':
70 if len(parents_menu) != 0:
71 current_menu = parents_menu.pop() # 此命令删除最后一个列表元素并返回值给当前菜单 。
72 else:
73 print('已到菜单最顶层')
74 elif choice == 'q':
75 print('您已退出程序')
76 break
77 else:
78 if choice not in current_menu:
79 print("错误输入菜单{},请检查从新输入".format(choice))
80 continue