# -*- coding: utf-8 -*-
# @Time    : 2020/7/31 0:13
# @Author  : Breeze
# @FileName: 三级菜单.py

menu = {
    '北京':{
        '朝阳':{
            '国贸':{
                'CICC':{},
                'HP':{},
                '渣打银行':{}
            },
            '望京':{
                '陌陌':{},
                '奔驰':{},
                '360':{},
            },
            '三里屯':{
                '优衣库':{},
                'apple':{},
            },
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '阿泰包子':{}
            },
            '天通苑':{
                '链家':{},
                '我爱我家':{},
            },
            '回龙观':{},
        },
        '海淀':{
            '五道口':{
                '谷歌':{},
                '网易':{},
                '快手':{},
                'SOHU':{},
                'SOGO':{},
            },
            '中关村':{
                'YOUKU':{},
                'IQIYI':{},
                '汽车之家':{},
                '新东方':{},
                'QQ':{},
            },
        },
    },
    '上海':{
        '浦东':{
            '陆家嘴':{
                'CICC':{},
                '高盛':{},
                '摩根':{},
            },
            '外滩':{},
        },
        '闵行':{},
        '静安':{},

    },
    '山东':{
        '济南':{},
        '德州':{
            '乐陵':{
                '丁务镇':{},
                '城区':{},
            },
            '平原':{},
        },
        '青岛':{},
    }
}

back_flag = False
exit_flag = False
while not  back_flag and not exit_flag:
    for key in menu:
        print(key)
    choice = input('>>>:').strip()
    if choice in menu:
        while not  back_flag and not exit_flag:
            for key2 in menu[choice]:
                print(key2)
            choice2 = input('>>>:').strip()
            if choice2 == 'b':
                back_flag = True
            if choice2 == 'q':
                exit_flag = True
            if choice2 in menu[choice]:
                while not  back_flag and not exit_flag:
                    for key3 in menu[choice][choice2]:
                        print(key3)
                    choice3 = input('>>>:').strip()
                    if choice3 == 'b':
                        back_flag = True
                    if choice3 == 'q':
                        exit_flag = True
                    if choice3 in menu[choice][choice2]:
                        while not back_flag and not exit_flag:
                            for key4 in menu[choice][choice2][choice3]:
                                print(key4)
                            choice4 = input('>>>:').strip()
                            print('last level')
                            if choice4 == 'b':
                                back_flag = True
                            if choice4 == 'q':
                                exit_flag = True
                        else:
                            back_flag = False
                else:
                    back_flag = False
        else:
            back_flag = False
# -*- coding: utf-8 -*-
# @Time    : 2020/7/31 1:29
# @Author  : Breeze
# @FileName: 三级菜单high.py

menu = {
    '北京':{
        '朝阳':{
            '国贸':{
                'CICC':{},
                'HP':{},
                '渣打银行':{}
            },
            '望京':{
                '陌陌':{},
                '奔驰':{},
                '360':{},
            },
            '三里屯':{
                '优衣库':{},
                'apple':{},
            },
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '阿泰包子':{}
            },
            '天通苑':{
                '链家':{},
                '我爱我家':{},
            },
            '回龙观':{},
        },
        '海淀':{
            '五道口':{
                '谷歌':{},
                '网易':{},
                '快手':{},
                'SOHU':{},
                'SOGO':{},
            },
            '中关村':{
                'YOUKU':{},
                'IQIYI':{},
                '汽车之家':{},
                '新东方':{},
                'QQ':{},
            },
        },
    },
    '上海':{
        '浦东':{
            '陆家嘴':{
                'CICC':{},
                '高盛':{},
                '摩根':{},
            },
            '外滩':{},
        },
        '闵行':{},
        '静安':{},

    },
    '山东':{
        '济南':{},
        '德州':{
            '乐陵':{
                '丁务镇':{},
                '城区':{},
            },
            '平原':{},
        },
        '青岛':{},
    }
}

current_layer = menu#实现动态循环
parent_layers = []#保存所有父级,最后一个元素永远是父级
while True:
    for key in current_layer:
        print(key)
    choice = input('>>>:').strip()
    if len(choice) == 0:
        continue
    if choice in current_layer:
        parent_layers.append(current_layer)#在进入下一层之前,把当前层(也就是下一层父级)追加到列表中
        #下一次loop,当用户选择b的时候,就可以直接去列表中最后一个值
        current_layer = current_layer[choice]#改成了子层
    elif choice == 'b' and parent_layers:
            current_layer = parent_layers.pop()#取出列表中的最后一个值,因为他是当前层的父级
    else:print('无此项')

 

posted on 2020-07-31 02:18  我是一个菜鸡  阅读(208)  评论(0编辑  收藏  举报