思路:
1. 整个程序中只有各级字典的键值在变化,所以可以引入一个动态变量
2. 利用一个空列表储存前面的输入菜单记录,输入“b”返回时调用这个列表的最后一条记录,并把该记录删除
menu = { ‘北京‘:{ ‘海淀‘:{ ‘五道口‘:{ ‘soho‘:{}, ‘网易‘:{}, ‘google‘:{} }, ‘中关村‘:{ ‘爱奇艺‘:{}, ‘汽车之家‘:{}, ‘youku‘:{}, }, ‘上地‘:{ ‘百度‘:{}, }, }, ‘昌平‘:{ ‘沙河‘:{ ‘老男孩‘:{}, ‘北航‘:{}, }, ‘天通苑‘:{}, ‘回龙观‘:{}, }, ‘朝阳‘:{}, ‘东城‘:{}, }, ‘上海‘:{ ‘闵行‘:{ "人民广场":{ ‘炸鸡店‘:{} } }, ‘闸北‘:{ ‘火车战‘:{ ‘携程‘:{} } }, ‘浦东‘:{}, }, ‘山东‘:{}, } current_layer = menu #给各层字典的key值赋一个变量 layer = [ ] #用于存储上一级菜单记录 while True: for i in current_layer: #进入之后打印这一级字典的key值 print(i) choice = input(‘>>>‘) if choice in current_layer: layer.append(current_layer) #这级字典保存在layer中作为“b”的返回记录 current_layer = current_layer[choice] # 把即将进入的子菜单赋值给current_layer动态变量,然后让这个子菜单作为一个父菜单再去进行下一轮循环 elif choice == ‘b‘: if len(layer) != 0: current_layer = layer.pop() #把列表layer中保存的上一条记录(父级菜单)取出来,并从layer中删除,然后把取出来的上一级菜单赋值给current_layer。 else: print(‘当前已是第一级菜单 ‘) elif choice == ‘q‘: exit(‘bye‘)