# coding: utf-8 """ 三级菜单 需求: 可依次选择进入各子菜单 可从任意一层往回退到上一层 可从任意一层退出程序 所需新知识点:列表、字典 """ # 三级菜单数据信息 menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} } }, '闸北':{ '火车站':{ '携程':{} } }, '浦东':{}, }, '山东':{}, } # 当前所在层级 current_layer = menu # 上一层级,list列表存储 last_layer = [] # 判断是否退出循环(胡导推荐) is_not_exit = True # 通过循环遍历菜单 while is_not_exit: # 打印所在层级 for layer in current_layer: print(layer) # 用户输入 user_select = input(">>:") # 对用户输入进行if条件判断(进入下一层、返回上一层b、退出q、输入有误) # 进入下一层 if user_select in current_layer: # 把当前层级记录到存放“上一层级”的列表 last_layer.append(current_layer) # 更新当前层级为新选择的层级 current_layer = current_layer[user_select] # 返回上一层b elif user_select == "b": # 判断上一层是否为空 if len(last_layer) > 0: # 从“上一层级”列表取出上一层,赋值给当前层级,并且把上一层级从列表移除 current_layer = last_layer.pop() else: print("到顶层了兄弟~") # 退出q elif user_select == "q": # exit("程序退出,谢谢使用!") is_not_exit = False print("程序退出,谢谢使用!") # 输入有误 else: print("输入有误,请重新输入~")