关于三级菜单的练习

example1:

menu={
    '北京':{
        '朝阳':{
            '国贸':{},
            '望京':{},
            '三里屯':{},
        },
        '昌平':{},
        '海淀':{},
    },
    '上海':{},
    '山东':{},
}
while True:
    for key in menu:
        print(key)
    choice=input(">>").strip()
    if choice in menu:
        for key2 in menu[choice]:
            print(key2)
        choice2=input(">>:").strip()
        if choice2 in menu[choice]:
            while True:
                for key3 in menu[choice][choice2]:
                     print(key3)

example2:

menu = {
    '北京': {
        '朝阳': {
            '国贸': {},
            'CICC': {},
            'HP': {},
            '渣打银行': {},
            'CCTV': {},
        },
        '望京': {
            '陌陌': {},
            '奔驰': {},
            '360': {},
        },
        '三里屯': {
            '优衣库': {},
            'apple': {},
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '阿泰包子': {},
            },
            '天通苑': {
                '链家': {},
                '我爱我家': {},
            },
            '回龙观': {},
        },
        '海淀': {
            '五道口': {
                '谷歌': {},
                '网易': {},
                'sohu': {},
                '快手': {},
            },
            '中关村': {
                'youku': {},
                'Iqiyi': {},
                '汽车之家': {},
                '新东方': {},
                'QQ': {},
            },

        },
    },
    '上海': {
        '浦东': {
            '陆家嘴': {
                'CICC': {},
                '高盛': {},
                '摩根': {},
            },
        },
        '闵行': {},
        '静安': {},
    },
    '山东': {
        '济南': {},
        '德州': {
            '乐陵': {
                '丁务镇': {},
                '城区': {},
            },
            '平原': {},
        },
        '青岛': {},
    },
}

floor = menu  # 定义当前层为menu,实现动态循环;
empty_list = []  # 定义一个空列表,保存所有父级,最后一个元素永远都是父级;
while True:  # while True 语句中一定要有结束该循环的break语句,否则会一直循环下去;
    for key in floor:
        print(key)  # 打印菜单内容
    # 让用户选择输入,strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列;
    choice = input("请输入地址>>>【返回/b,退出/q】:").strip()
    if choice == 'q':  # 判断如果用户输入q,便break跳出循环;
        break
    # 判断用户如果输入的字符长度如果为0,便跳出本次循环;
    if len(choice) == 0:  # len() 方法返回对象(字符、列表、元组等)长度或项目个数。
        continue
    if choice in floor:  # 如果用户输入的是菜单里的内容;
        # 在进入下一层之前,把当前层追加到列表中;
        # 下一次循环时,如果用户输入b,就可以直接取列表的最后一个值出来;
        empty_list.append(floor)  # append() 方法用于在列表末尾添加新的对象;
        floor = floor[choice]  # 改成下一层;
    elif choice == 'b':  # 如果用户输入b;
        if empty_list:  # 判断列表是否为空;
            # pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
            floor = empty_list.pop()  # 取出列表最后一个值,因为他就是当前层的父级;
    else:
        print('您输入有误!')

发布了15 篇原创文章 · 获赞 1 · 访问量 347

猜你喜欢

转载自blog.csdn.net/wanerding/article/details/104655058