欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python 三级菜单

程序员文章站 2022-07-14 22:58:13
...

三级菜单实现的基本原理就是在字典中vaules也可以是字典,所以可以层层嵌套形成多级的格局

我们可以来看一下代码:

# 一级菜单
def menu1():
    print('一级菜单'.center(40,'-'))
    for index1,key1 in enumerate(dic.keys(),1):   # 遍历一级菜单
        print(index1,key1)
        dic_key[str(index1)] = key1
    # print(dic_key)
    choose = input("请选择1级菜单,输入B返回上一级菜单,输入Q退出菜单:")
    if choose == 'q':quit()
    elif choose == 'b':
        print("此处为一级菜单,不能返回")
    elif dic_key.get(choose):
        menu2(dic_key[choose])      # 将二级菜单的key传给函数menu2
    else:
        print("输入有误,请重新输入")


def menu2(choose1):
    print('二级菜单'.center(40, '-'))
    for index2,key2 in enumerate(dic[choose1].keys(),1):      # 遍历二级菜单
        print(index2,key2)
        dic_key[str(index2)] = key2
    choose2 = input("请选择2级菜单,输入B返回上一级菜单,输入Q退出菜单")
    if choose2 == 'q':quit()
    elif choose2 == 'b':
        menu1()
    elif dic_key.get(choose2):
        menu3(choose1,dic_key[choose2])
    else:
        print("输入有误,请重新输入")


def menu3(choose1,choose2):
    print('三级菜单'.center(40, '-'))
    for index3, key3 in enumerate(dic[choose1][choose2].keys(), 1):
        print(index3, key3)
        dic_key[str(index3)] = key3
    choose3 = input("请选择3级菜单,输入B返回上一级菜单,输入Q退出菜单")
    if choose3 == 'q':
        quit()
    elif choose3 == 'b':
        menu2(choose1)
    elif dic_key.get(choose3):
        menu4(choose1,choose2,dic_key[choose3])
    else:
        print("输入有误,请重新输入")


def menu4(choose1,choose2,choose3):
    for index4, vaule in enumerate(dic[choose1][choose2][choose3],1):
        print(index4, vaule)


if __name__ == '__main__':
    dic = \
        {
            '北京': {
                '东城':
                    {
                        '沙河': ['老男孩', '恋家'],
                        '天通苑': ['手机卖场', '屌丝吧']
                    },
                '朝阳':
                    {
                        '花家地': ['朝阳公园', '望京soho'],
                        '北小河': ['北小河公园', '北京中学']
                    }
            },
            '上海': {
                '虹桥':
                    {
                        '虹桥机场': ['超市', '特产店', '水吧'],
                        '东方明珠': ['电影院', '游泳馆', '餐馆']
                    },
                '浦东':
                    {
                        '景秀路': ['世纪公园', '立交桥'],
                        '中环路': ['鲁迅公园', '同济大学']
                    }
            }
        }
    dic_key = {}
    while True:
        menu1()