instance3:multilayer menu
#! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "Deakin" # Email: 469792427@qq.com # Date: 2018/1/12 #1. 运行程序输出第一级菜单 #2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 #3. 菜单数据保存在文件中 #4. 让用户选择是否要退出 #5. 有返回上一级菜单的功能 menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} } }, '闸北':{ '火车战':{ '携程':{} } }, '浦东':{}, }, '山东':{}, } quit=False while not quit: for i in menu: print(i) choice = input("选择城市,按'r'返回上一层,按'q退出:") if choice in menu: while not quit: for i2 in menu[choice]: print('\t',i2) choice2=input("选择城区,按'r'返回上一层,按'q退出:") if choice2 in menu[choice]: while not quit: for i3 in menu[choice][choice2]: print('\t\t',i3) choice3=input("选择街道,按'r'返回上一层,按'q退出") if choice3 in menu[choice][choice2]: for i4 in menu[choice][choice2][choice3]: print('\t\t\t',i4) choice4=input("下属公司,按'r'返回上一层,按'q退出") if choice4=="r": pass elif choice4=="q": quit=True else: print("最后一层,按'r'返回上一层,按'q退出") elif choice3=="r": break elif choice3 == "q": quit = True else: print("请输入列表中的街道名称") elif choice2=="r": break elif choice2 == "q": quit = True else: print("请输入列表中的城区名称") elif choice == "q": quit = True else: print("请输入列表中的城市名称")
PS:对于多级菜单,在下层想直接退出,好像只能while not False,或者quit=True,while quit,print q的时候quit=False,暂时没想到其他办法。