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 = "请输入菜单名,进入子菜单 输入'b'回到上级菜单 输入'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