学习Python的第二十天【三级菜单】高级版

------------恢复内容开始------------

三级菜单要求:1.可以一层一层的进入到所有层;2.可以在每一层返回上一层;输入b3.可以在任意层退出  主菜单;输入q

#初级:(原始代码)
#__author:"hanhankeji"
#date: 2019/12/11

menu = {
    "北京":{
        "朝阳":{
            "国贸":{
                "CICC":{},
                "hp":{},
                "CCTV":{},
            },
        },
        "望京":{
            "momo":{},
            "奔驰":{},
            "360":{},
            "联邦":{},
        },
        "三里屯":{
            "优衣库":{},
            "大使馆":{},
            "酒吧":{},
            "苹果":{},
        },
        "昌平":{
            "沙河":{
                "老男孩":{},
                "包子铺":{},
            },
            "天通苑":{
                "链家":{},
                "我爱我家":{},
                "汽修厂":{},
            },
            "回龙观":{},
            "海定":{
                "五道口":{
                    "谷歌":{},
                    "搜狐":{},
                    "网易":{},
                    "搜狗":{},
                    "快手":{},
                    "清华":{},
                    "北大":{},
                },
                "中关村":{
                    "优酷":{},
                    "爱奇艺":{},
                    "腾讯":{},
                    "汽车之家":{},
                    "新东方":{},
                    "炸鸡店":{},
                    "南翔":{},
                },
            },
        },
    },
    "上海":{
        "浦东区":{
            "陆家嘴":{
                "CICC":{},
                "高盛":{},
                "摩根":{},
            },
            "外滩":{},
            "东方明珠":{},
        },
        "闸北区":{},
        "黄浦区":{},
        "徐汇区":{},
        "嘉定区":{},
    },
    "山东":{
        "济南":{
            "市中区":{},
            "历下区":{},
            "天桥区":{},
            "桂英渠":{},
            "长清区":{},
        },
        "德州":{},
        "青岛":{},
        "泰安":{},
        "枣庄":{},
    },
    "江苏":{
        "南京市":{},
        "苏州市":{},
        "常州":{},
        "张家港市":{},
        "大丰市":{},
    },
    "重庆":{},
    "浙江":{},
}
back_flag = False
exit_falg = False
while not  back_flag and not exit_falg :
    for i in (menu):
        print(i)
    choice = input("输入你的省>>:").strip()
    if choice == "q":
        exit_falg = True
    if  choice in menu :
        while not back_flag and not exit_falg:
            for j in menu[choice]:
                print(j)
            choice2 = input("输入你的县级>>:").strip()
            if choice2 == "q":
                exit_falg = True
            if choice2 == "b":
                back_flag = True
            if choice2 in  menu[choice]:
                while not back_flag and not exit_falg:
                    for k in menu[choice][choice2]:
                        print(k)
                    choice3 = input("输入你的市级>>:")
                    if choice3 == "q":
                        exit_falg = True
                    if choice3 == "b":
                        back_flag = True
                    if choice3 in menu[choice][choice2]:
                        while not back_flag and not exit_falg:
                            for l in menu[choice][choice2][choice3]:
                                print(l)
                            choice4 = input("输入区级>>:").strip()
                            print(" last leavel!")
                            if choice4 == "b" :
                                back_flag = True
                            if choice4 == "q" :
                                exit_falg = True
                        else:
                            back_flag =False
                else:
                    back_flag = False
        else:
            back_flag = False

高级版本:

#__author:"hanhankeji"
#date: 2019/12/17

menu = {
    "北京":{
        "朝阳":{
            "国贸":{
                "CICC":{},
                "hp":{},
                "CCTV":{},
            },
        },
        "望京":{
            "momo":{},
            "奔驰":{},
            "360":{},
            "联邦":{},
        },
        "三里屯":{
            "优衣库":{},
            "大使馆":{},
            "酒吧":{},
            "苹果":{},
        },
        "昌平":{
            "沙河":{
                "老男孩":{},
                "包子铺":{},
            },
            "天通苑":{
                "链家":{},
                "我爱我家":{},
                "汽修厂":{},
            },
            "回龙观":{},
            "海定":{
                "五道口":{
                    "谷歌":{},
                    "搜狐":{},
                    "网易":{},
                    "搜狗":{},
                    "快手":{},
                    "清华":{},
                    "北大":{},
                },
                "中关村":{
                    "优酷":{},
                    "爱奇艺":{},
                    "腾讯":{},
                    "汽车之家":{},
                    "新东方":{},
                    "炸鸡店":{},
                    "南翔":{},
                },
            },
        },
    },
    "上海":{
        "浦东区":{
            "陆家嘴":{
                "CICC":{},
                "高盛":{},
                "摩根":{},
            },
            "外滩":{},
            "东方明珠":{},
        },
        "闸北区":{},
        "黄浦区":{},
        "徐汇区":{},
        "嘉定区":{},
    },
    "山东":{
        "济南":{
            "市中区":{},
            "历下区":{},
            "天桥区":{},
            "桂英渠":{},
            "长清区":{},
        },
        "德州":{},
        "青岛":{},
        "泰安":{},
        "枣庄":{},
    },
    "江苏":{
        "南京市":{},
        "苏州市":{},
        "常州":{},
        "张家港市":{},
        "大丰市":{},
    },
    "重庆":{},
    "浙江":{},
}
current_layer = menu #实现动态循环
parent_layers = [] #保存所有父级, 最后一个元素永远都是父级
# parent_list = []
while True:
    for i in current_layer:
        print(i)
    choice = input("请输入选项>>:").strip()
    if len(choice) == 0 : continue
    if choice in current_layer :
        # parent_layers = current_layer[choice] #改之前相当于父亲
        parent_layers.append(current_layer)  #在进入下一层之前,把当前层(也就是下一层的父级)追加到列表中
        #下一次loop,当用户选择b的时候后,就可以直接取列表的最后一个值出来就OK了·
        current_layer = current_layer[choice]  #改成了子层
    elif choice == "b":
        #current_layer = parent_layers.pop()
        if parent_layers : #[]
            current_layer = parent_layers.pop()#取出列表的最后一个值
        # current_layer = parent_layers  #把子层改成父亲
    elif choice == "q" :
        break
    else:
        print("没有这个选项,请确认!")

------------恢复内容结束------------

原文地址:https://www.cnblogs.com/hanhankeji/p/12054299.html

时间: 2024-10-11 07:42:58

学习Python的第二十天【三级菜单】高级版的相关文章

Python进阶实战之三级菜单

目录 Python进阶实战之三级菜单 面条版 文艺青年版 Python进阶实战之三级菜单 打印省.市.县三级菜单 可返回上一级 可随时退出程序 面条版 menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航

Python自动化开发学习的第一周作业---三级菜单

作业需求: (1)运行程序输出第一级菜单(2)选择一级菜单某项,输出二级菜单,同理输出三级菜单(3)让用户选择是否要退出(4)有返回上一级菜单的功能 1 data = { 2 "天津":{ 3 "南开区":{ 4 "南开大学":{ 5 "历史系":{}, 6 "文学系":{}, 7 "英语系":{}, 8 }, 9 "科技大学":{ 10 "计算机系&quo

新手小白 python之路 Day1 (三级菜单功能实现)

直接上需求: 实现一个多级菜单 三级菜单的实现 可以依次选择进入各个子菜单 也可以返回上级菜单 所需知识 列表 字典 需求也比较简单,但实际上做起来还是遇到许多的问题,我这边主要用到的知识点大概就是  字典 等 大致的思路 我是分别写了四个函数 Abnormal() 通过抛出异常来判断输入的编号是否合法 Province() 获取省级菜单 City() 获取市级菜单 Area() 获取区级菜单 来实现整个功能的,话不多说直接上代码了 #!/usr/bin/env python # -*- cod

python很low的三级菜单(六)

实验名称:三级菜单 实验要求: 1.可依次选择进入各子菜单2.可以在任意一步回退到上一层或直接退出选择3.所需知识点:列表.字典 思路: 1.先使用多级嵌套字典创建好三级菜单2.使用while True:当条件成立时,进入下面for循环,打印当前菜单项.3.用户输入4.判断输入菜单是否存在(输入q退出,b返回上一层)5.继续while循环(直到q退出循环) 流程图: 所需知识点:列表.字典列表list:(待整理)字典dictionary:(待整理) 代码实现: #!/usr/bin/env py

Python学习_第一阶段__三级菜单

menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} }

学习python课程第二十天

一.     logging模块 1.  日志的级别分别有: logging.debug  (''这是一个调试信息'')  #10 级别最低 logging.info  ('一些常规的信息')  #20 logging.warning  ('警告信息')  #30 logging.error  ('错误信息')  #40 logging.critical  ('严重错误')  #50 #  在logging模块中又对应的常量用来表示级别 默认情况下  默认级别是#30  waming  日志输出

Day2课后作业:三级菜单简单版

menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, '谷歌':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, '联想':{}, 'H3C':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '阿泰包子':{}, ' 北航':{}, }, '天通苑':{ '圆通快递':{}, '三合贸易':{}, }, '回龙观':{ '腾讯众创':{}, '盈创

【代码段】-- 三级菜单 (基础版)

# __author__:"ShengXin" # __date__:2017/8/24 full_menu = {'河北省':{'张家口市':['蔚县','涿鹿县','怀来县','阳原县'], '唐山市':['丰润区','滦县','开平区','玉田县'], '衡水市':['武邑县','武强县','枣强县','市辖区'] }, '山西省':{'太原市':['A','B','C','D'], '大同市':['AA','BB','CC','DD'], '吕梁市':['AAA','BBB',

三级菜单(高大上版)

1 menu = { 2 '北京':{ 3 '朝阳':{ 4 '国贸':{ 5 'CICC':{}, 6 'HP':{}, 7 '渣打银行':{}, 8 'CCTV':{}, 9 }, 10 '望京':{ 11 '陌陌':{}, 12 '奔驰':{}, 13 '360':{}, 14 }, 15 '三里屯':{ 16 '优衣库':{}, 17 'apple':{}, 18 }, 19 }, 20 '昌平':{ 21 '沙河':{ 22 '老男孩':{}, 23 '阿泰包子':{}, 24 },