当前位置: 首页 > news >正文

python三级菜单实例(傻瓜版和进阶版)

 

程序: python三级菜单

要求: :
1.打印省、市、县三级菜单
2.可返回上一级
3.可随时退出程序

方案一:傻瓜版(其实傻瓜版考察的主要是思路!思路清楚了,那才不是傻瓜!O(∩_∩)O哈哈~)


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

while True:
    for i in menu:
        print(i)
    choice = input("请选择进入1>>:")  # 第一级

    if choice in menu:
        while True:
            for i2 in menu[choice]:
                print("\t",i2)
            choice2 = input("请选择进入2>>:")    # 第二级

            if choice2 in menu[choice]:
                while True:
                    for i3 in menu[choice][choice2]:
                        print("\t\t", i3)
                    choice3 = input("请选择进入3>>:")  # 第三级
                    
                    if choice3 in menu[choice][choice2]:
                        for i4 in menu[choice][choice2][choice3]:
                            print("\t\t\t",i4)
                        choice4 = input("最后一层,按b返回>>:")  # 第四级,主要是为了返回上一层
                        if choice4 == "b":
                            pass
                    if choice3 == "b":
                        break
            if choice2 == "b":
                break

在这里插入图片描述

方案二:进阶版(虽说是进阶版,但其实改的地方只是代码重复的地方,思路没变,结果也一样)


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


exit_flag = False
current_layer = menu

layers = [menu]

while not  exit_flag:
    for k in current_layer:
        print(k)
    choice = input(">>:").strip()
    if choice == "b":
        current_layer = layers[-1]
        #print("change to laster", current_layer)
        layers.pop()
    elif choice not  in current_layer:continue
    else:
        layers.append(current_layer)
        current_layer = current_layer[choice]

在这里插入图片描述

转载于:https://www.cnblogs.com/souhaite/p/10585614.html

相关文章:

  • linux之HTTP服务
  • 【原】戏说Java
  • WPF 获取鼠标屏幕位置、窗口位置、控件位置
  • 使用ABAP正则表达式解析HTML标签
  • 计算机英语学习笔记(六)
  • java多线程和长连接,三方转换通信的实践(1)——转换端程序
  • 【呆鸟译Py】这位老师的70个问题,100个数据分析师都想不全
  • 用Gmail做QQ邮件群发的一种方式
  • 机器人操作系统来到Windows
  • sublime text3
  • Spring Cloud 之 Consul 与 Consul 服务剔除
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 在ABAP里取得一个数据库表记录数的两种方法
  • 【Unity Shader】Shader基础
  • vue项目使用微信公众号支付
  • #Java异常处理
  • “大数据应用场景”之隔壁老王(连载四)
  • 【node学习】协程
  • 〔开发系列〕一次关于小程序开发的深度总结
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • chrome扩展demo1-小时钟
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • httpie使用详解
  • JavaScript HTML DOM
  • JavaScript类型识别
  • Java基本数据类型之Number
  • supervisor 永不挂掉的进程 安装以及使用
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 反思总结然后整装待发
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 力扣(LeetCode)56
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 一个完整Java Web项目背后的密码
  • 云大使推广中的常见热门问题
  • 正则表达式
  • ​人工智能书单(数学基础篇)
  • # centos7下FFmpeg环境部署记录
  • $NOIp2018$劝退记
  • (二)JAVA使用POI操作excel
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (七)理解angular中的module和injector,即依赖注入
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)平衡树
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET 动态调用WebService + WSE + UsernameToken
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .sys文件乱码_python vscode输出乱码
  • [ SNOI 2013 ] Quare
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务