Day06 作业

Day06 作业

要求

  1. 打印省、市、县三级菜单
  2. 可返回上一级
  3. 可随时退出程序
menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车战': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}

continue_tag = True
#last_menu用于保存访问过的菜单
last_menu = []
while continue_tag:
    for key in menu:
        print(key)
    next_level = input("输入列表中选项进入下一层菜单,输入“q”退出, 输入“b”返回上一层:\n").strip()
    if next_level == "q":
        continue_tag = False
    #用户选择返回上层菜单,如果last_menu中还记录有访问过的菜单,则取出最后访问的菜单
    elif next_level == "b" and len(last_menu):
        menu = last_menu.pop()
    #用户选择下层菜单,如果有下层菜单,则准备进入下层菜单,并添加当前菜单到last_menu末尾
    elif menu.get(next_level):
        last_menu.append(menu)
        menu = menu.get(next_level)
    else:
        print("无上层菜单或下层菜单")
        continue
# todo 程序存在的问题last_menu中保存有重复的数据,如果要访问的菜单节点很多,会浪费内存

posted @ 2019-09-15 11:33  YajunRan  阅读(76)  评论(0编辑  收藏  举报