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 # 若输入【北京】,则显示【海淀、昌平、朝阳、东城】,用户可退出、返回上一层,也可输入选择 47 # 若输入【海淀】,则显示【五道口、中关村、上地】,用户可退出、返回上一层,也可输入选择 48 # 若输入【五道口】,则显示【Sohu、网易、google】,用户可退出、返回上一层,也可输入选择
1 # 递归思想 2 def menu_func(menu): 3 while True: 4 for key in menu: 5 print(key) 6 inp = input(‘>>>‘).strip() 7 if inp.upper() == ‘Q‘: return ‘q‘ 8 if inp.upper() == ‘B‘: return ‘b‘ 9 elif menu.get(inp): 10 flag = menu_func(menu[inp]) 11 if flag == ‘q‘: return ‘q‘ 12 menu_func(menu) 13 print(‘已退出‘)
1 # 堆栈思想 2 lst = [menu] 3 while lst: 4 for key in lst[-1]: 5 print(key) 6 inp = input(‘>>>‘) 7 if inp.upper() == ‘Q‘: 8 break 9 elif inp.upper() == ‘B‘: # 返回上一层 10 lst.pop() # pop默认删除列表的最后一个元素 11 elif lst[-1].get(inp): 12 lst.append(lst[-1][inp])
原文:https://www.cnblogs.com/liuweida/p/11099955.html