menu之多级菜单的解决方案
1 #__author: Pastime_Rr 2 #__product_name: PyCharm 3 #__project_name: Old-Boy 4 #__date: 2018/1/26 5 #__time: 21:12 6 menu={ 7 '北京':{ 8 '朝阳':{ 9 '国贸':{ 10 'CICC':{}, 11 'HP':{}, 12 '渣打银行':{}, 13 'CCTV':{} 14 }, 15 '望京':{ 16 '陌陌':{}, 17 '奔驰':{}, 18 '360':{}, 19 }, 20 '三里屯':{ 21 '优衣库':{}, 22 'apple':{} 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 'QQ':{}, 50 }, 51 }, 52 }, 53 '上海':{ 54 '浦东':{ 55 '陆家嘴':{ 56 'CICC':{}, 57 '高盛':{}, 58 '摩根':{}, 59 }, 60 '外滩':{}, 61 62 }, 63 '闵行':{}, 64 '静安':{}, 65 }, 66 '山东':{ 67 '济南':{ 68 69 }, 70 '德州':{ 71 '乐陵':{ 72 '丁务镇':{} 73 }, 74 '平原':{}, 75 }, 76 '青岛':{}, 77 }, 78 } 79 80 current_layer = menu 81 parent_layers = []#保存所有父级,最后一个元素永远都是父级 82 while True: 83 for key in current_layer: 84 print(key) 85 choice = input(">>>:").strip() 86 if len(choice) == 0:continue 87 if choice in current_layer: 88 parent_layers.append(current_layer)#在进入下一层之前,把当前层(也就是下一层父级)追加到列表中 89 #下一次循环,当用户选择b选项,就可以直接取列表的最后一个值出来... 90 current_layer = current_layer[choice]#改成了子层 91 92 elif choice == "b": 93 if parent_layers:#空为False 94 current_layer = parent_layers.pop()#取出列表的最后一个值,它就是当前层的父级 95 else: 96 print("最后一层!") 97 else: 98 print("无此项")