Python入门-三级菜单

作业题目: 三级菜单

  • 作业需求:

menu = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '网易':{},
                'google':{}
            },
            '中关村':{
                '爱奇艺':{},
                '汽车之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '优衣库':{},
                '北航':{},
            },
            '天通苑':{},
            '回龙观':{},
        },
        '朝阳':{},
        '东城':{},
    },
    '上海':{
        '闵行':{
            "人民广场":{
                '炸鸡店':{}
            }
        },
        '闸北':{
            '火车站':{
                '携程':{}
            }
        },
        '浦东':{},
    },
    '山东':{},
}
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典

基础版:
while True:
    for i in menu:
        print(i)
    province = input("请选择省份:  (按Q退出)")
    if province == 'Q':
        exit()
    else:
        print('输入错误')
    if province in menu:
        while True:
            for i in menu[province]:
                print(i)
            city = input("请选择市:     (按Q退出,q返回)")
            if city == 'Q':
                exit()
            if city == 'q':
                break
            else:
                print('输入错误')
            if city in menu[province]:
                while True:
                    for i in menu[province][city]:
                        print(i)
                    county = input("请选择区或县:    (按Q退出,q返回)")
                    if county == 'Q':
                        exit()
                    if county == 'q':
                        break
                    else:
                        print('输入错误')
                    if county in menu[province][city]:
                        while True:
                            for i in menu[province][city][county]:
                                print(i)
                            choice = input('Q退出,q返回:')
                            if choice == 'Q':
                                exit()
                            if choice == 'q':
                                break
                            else:
                                print('输入错误')

装逼版:

rank = menu
last_rank = []
while True:
    for i in rank:
        print(i)
    choice = input('>:').strip()
    if choice in rank:
        last_rank.append(rank)      # 将当前菜单添加到列表
        rank = rank[choice]         # 进入下一层菜单
    elif choice == 'b':
        if len(last_rank) != 0:
            rank = last_rank.pop()  # 删除列表最后一位元素,从而返回上一层
    elif choice == 'Q':
        exit()

最里层和最外层还可以增加相应提示。

posted @ 2018-05-20 21:34  ZivLi  阅读(170)  评论(0编辑  收藏  举报