需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
1 # -*- coding:utf-8 -*- 2 # Author:Xiaorui 3 # 需求: 4 # 可依次选择进入各子菜单 5 # 可从任意一层往回退到上一层 6 # 可从任意一层退出程序 7 # 所需新知识点:列表、字典 8 menu = { 9 ‘北京‘: { 10 ‘海淀‘: { 11 ‘五道口‘: { 12 ‘soho‘: {}, 13 ‘网易‘: {}, 14 ‘google‘: {} 15 }, 16 ‘中关村‘: { 17 ‘爱奇艺‘: {}, 18 ‘汽车之家‘: {}, 19 ‘youku‘: {}, 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 }, 47 ‘浦东‘: {}, 48 }, 49 ‘山东‘: {}, 50 } 51 place_menu = menu 52 last_place_layers = [] # 采用列表,目的是之后可以调用列表的pop()方法 53 while True: # while死循环保证非用户退出就一直在循环中,且只使用一次while循环 54 for i in place_menu: 55 print(i) 56 choice = input("请输入地名:").strip() # strip()方法除去输入俩侧空格 57 if not choice: # 判断用户是否输入的已有地名 58 continue 59 else: 60 pass # if..else语句完整,便于阅读 61 if choice in place_menu: # 判断用户是否输入的已有地名 62 last_place_layers.append(place_menu) # 运用append()方法保存操作前的一层 63 place_menu = place_menu[choice] # 进入下一层 64 if not place_menu: # 判断是否处在底层,if进行判断时字典空为假,所以此处用not 65 print("你已经处在底层,回到上层请输入b,退出请输入p!") 66 else: 67 pass 68 elif choice == "b" or choice == "B": # 任意层可返回上一层 69 if len(last_place_layers) != 0: 70 place_menu = last_place_layers.pop() 71 else: 72 print("目前处于顶层!") 73 else: # 任意层可退出 74 if choice == "p" or choice == "P": 75 break 76 else: 77 pass # PEP8规范pass等不可结尾