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

python编程实例-三级菜单

程序员文章站 2024-03-14 20:42:41
...

一.程序要求
1.打印城市-区-地点的城市三级菜单
2.在菜单中可以一层一层的进入所有的目录层
3.也能够一层一层的退出目录
4.在任何一级菜单都可以退出程序
程序如下

menu={
    '南京':{
        '鼓楼区':{
            '新街口':{},
            '湖南路':{},
            '紫峰':{},
        },
        '玄武区':{
            '珠江路':{},
            '玄武湖':{},
            '紫金山':{},
        },
        '栖霞区':{
            '仙林大学城':{},
            '迈皋桥':{},
            '晓庄':{},
        },
        '秦淮区':{
            '夫子庙':{},
            '苜蓿园':{},
            '中华门':{},
        },
    },
    '扬州':{
        '广陵区':{
            '东光街':{},
            '四望亭':{},
            '时代广场':{},
        },
        '邗江区':{
            '京华城':{},
            '汽车西站':{},
            '瘦西湖':{},
        },
        '仪征市':{
            '真州镇':{},
            '青山镇':{},
            '大仪镇':{},
        },
    },
    '北京':{
        '朝阳区':{
            '三里屯':{},
            '国贸':{},
            '望京':{},
        },
        '海淀区':{
            '中关村':{},
            '五道口':{},
            '五棵松':{},
        },
        '东城区':{
            '王府井':{},
            '东直门':{},
            '安定门':{},
        },

    },
}
Flag=False#默认不返回上级菜单
while not Flag:
    for key in menu:
        print(key)
    choice=input("1-->>").strip()
    if choice in menu:
        while not Flag:
            for key2 in menu[choice]:
                print(key2)
            choice2=input("2-->>").strip()
            if choice2 in menu[choice]:
                while not Flag:
                    for key3 in menu[choice][choice2]:
                        print(key3)
                    print("the last level")
                    choice3 = input("3-->>").strip()
                    if choice3 in menu[choice][choice2]:
                        print("------------welcome to our city---------")
                    elif choice3=='q':
                        break
                    elif choice3 == 'e':
                        Flag=True
            elif choice2 == 'q':
                break
            elif choice2 == 'e':
                Flag = True
    elif choice=='q':
        print("###########welcome to come next time#################")
        break
    elif choice == 'e':
        Flag = True

程序执行
python编程实例-三级菜单
二.将代码优化,但是暂时只能实现逐层进入下级菜单,并能够逐层返回上一级菜单,无法完全退出程序,也无法任意退出程序
代码实现:

menu={
    '南京':{
        '鼓楼区':{
            '新街口':{},
            '湖南路':{},
            '紫峰':{},
        },
        '玄武区':{
            '珠江路':{},
            '玄武湖':{},
            '紫金山':{},
        },
        '栖霞区':{
            '仙林大学城':{},
            '迈皋桥':{},
            '晓庄':{},
        },
        '秦淮区':{
            '夫子庙':{},
            '苜蓿园':{},
            '中华门':{},
        },
    },
    '扬州':{
        '广陵区':{
            '东光街':{},
            '四望亭':{},
            '时代广场':{},
        },
        '邗江区':{
            '京华城':{},
            '汽车西站':{},
            '瘦西湖':{},
        },
        '仪征市':{
            '真州镇':{},
            '青山镇':{},
            '大仪镇':{},
        },
    },
    '北京':{
        '朝阳区':{
            '三里屯':{},
            '国贸':{},
            '望京':{},
        },
        '海淀区':{
            '中关村':{},
            '五道口':{},
            '五棵松':{},
        },
        '东城区':{
            '王府井':{},
            '东直门':{},
            '安定门':{},
        },

    },
}
current_level=menu
previous_level=[]
while True:
    for key in current_level:
        print(key)#循环遍历字典,打印出字典的key
    choice=input(">>").strip()
    if len(choice) == 0 :continue
    if choice in current_level:
        previous_level.append(current_level)#在进入下一层菜单之前,将上一层菜单保存到previous_level里面
        current_level=current_level[choice]#将下一层菜单赋值给current_level,进行下一层菜单的选择
    elif choice=="q":
        if previous_level:#如果previous_level为非空列表
            current_level=previous_level.pop()#取出列表中的最后一个值,作用返回上一级菜单
    else:
        print("no choice")