Python 模拟三级菜单可依次选择进入各级子菜单


menu={

    '东北':{

        '黑龙江':{'哈尔滨':['香坊','道里','道外','南岗'],

                 '齐齐哈尔':['龙沙','建华','铁峰','龙江']},

        '吉林省':{'长春':['南关区','宽城','朝阳','双阳'],

                 '吉林':['龙潭','船营','昌邑','丰满']}

    },

    '华北':{

        '河北省':{'廊坊':['廊坊1','廊坊2','廊坊3'],

                 '保定':['保定1','保定2','保定3']},

        '内蒙古':{'呼和浩特':['浩特1','浩特2','浩特3'],

                 '包头':['包头1','包头2','包头3']}

    }

}


while True:  # 无限循环,直到选择退出才结束程序

    for i,v in enumerate(menu.keys()):  # 1.  循环菜单读出一级选项信息

        print(i,v)

    menu_1=input('请输入一级菜单号,按q退出:').strip()   # 键入数字选择下一级选项

    if menu_1 == 'q':

        break

    if menu_1.isdigit():    # 如果参数为数字且为规定的选项则执行以下

        menu_1=int(menu_1)

        if menu_1 <= len(menu):

            key_1 = list(menu.keys())[menu_1]

        while True:     # 无限循环,直到选择退出才结束循环

            for i1,v1 in enumerate(menu[key_1]):    # 2.  循环菜单读出二级选项信息

                print(i1,v1)

            menu_2 = input('请输入二级菜单,按b返回:').strip()

            if menu_2 == 'b':

                break

            if menu_2.isdigit():        # 如果参数为数字且为规定的选项则执行以下

                menu_2=int(menu_2)

            if menu_2 <= len(menu[key_1]):

                key_2 = list(menu[key_1].keys())[menu_2]

                while True:

                    for i2,v2 in enumerate(menu[key_1][key_2]): # 3.循环菜单读三级信息

                        print(i2,v2)

                    menu_3 = input('请输入三级菜单,按b返回:').strip()

                    if menu_3 == 'b':

                        break

                    if menu_3.isdigit():     # 如果参数为数字且为规定的选项则执行以下

                        menu_3 = int(menu_3)

                        if menu_3 <= len(menu[key_1][key_2]):

                            key_3 = list(menu[key_1][key_2].keys())[menu_3]

                            while True:             #  循环显示三级菜单以下信息

                                for i3,v3 in enumerate(menu[key_1][key_2][key_3]):

                                    print(i3,v3)

                                menu_4 = input('按b返回:')

                                if menu_4 == 'b':

                                    break






注: 本文博引 http://51enjoy.blog.51cto.com/addblog.php 在python3.5中编写的代码,

        如有考虑不到之处还请多多指教,共同学习。