python打怪之路【第三篇】:利用Python实现三级菜单
程序: 利用Python实现三级菜单
要求: 
	  打印省、市、县三级菜单
	  可返回上一级
	  可随时退出程序
coding:
menu = {
    '北京':{
        '朝阳':{
            '国贸':{
                'CICC':{},
                'HP':{},
                '渣打银行':{},
                'CCTV':{},
            },
            '望京':{
                '陌陌':{},
                '奔驰':{},
                '':{},
            },
            '三里屯':{
                '优衣库':{},
                'apple':{},
            },
        },'海淀':{
            "五道口":{
                "谷歌":{},
                "网易":{},
                "Sohu":{},
                "Sogo":{},
                "快手":{},
            },
            "中关村":{
                "youku":{},
                "Iqiyi":{},
                "汽车之家":{},
                "新东方":{},
                "QQ":{},
            }
        },
    },
    '上海':{
        "浦东":{
            "陆家嘴":{
                "CICC":{},
                "高盛":{},
                "摩根":{},
            },
            "黄埔":{},
        },
        "闵行":{},
        "静安":{},
    }
}
current_layer = menu  #实现动态循环
parent_layers = []  #保存所有父级,最后一个元素永远都是父亲级
while True:
    for key in current_layer:
        print(key)
    choice = input("请输入项,b返回上一级,q退出!>>>:").strip()
    if len(choice) == 0:continue
    if choice in current_layer:
        parent_layers.append(current_layer)  #在进入下一层之前,把当前层(也就是下一层的父级)
        #下一次loop,当用户选择b的时候,就可以直接取列表的最后一个值出来就OK了
        current_layer = current_layer[choice]  #将当前层改成了子层
    elif choice == "b":
        if parent_layers:
            current_layer = parent_layers.pop()  #取出列表的最后一个值,因为它就是当前层的父级
    elif choice == "q":  #输入q时,退出程序
        exit()
    else:
        print("无此项")
python打怪之路【第三篇】:利用Python实现三级菜单的更多相关文章
- 我的Python升级打怪之路【三】:Python函数
		函数 在函数之前,我们一直遵循者:面向过程编程,即:根据业务逻辑从上到下实现功能,开发过程中最常见的就是粘贴复制.代码就没有重复利用率. 例如:有好多的重复的代码 if 条件: 发送指令 接收结果 e ... 
- python成长之路第三篇(4)_作用域,递归,模块,内置模块(os,ConfigParser,hashlib),with文件操作
		打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.作用域 2.递归 3.模块介绍 4.内置模块-OS 5.内置模块-ConfigParser 6.内置模块-has ... 
- Python学习之路【第一篇】-Python简介和基础入门
		1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ... 
- Python学习之路【第一篇】:Python简介与入门
		Python简介 一.什么是Python Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言 ... 
- python成长之路-----day1-----作业(登录程序和三级菜单)
		作业: 作业1:用户登录 1)程序说明: a.用户输入密码验证成功然后打印欢迎信息 b.如果密码错误,用户登录失败,提示用户,密码错误 c.用户输入密码错误3次,则用户锁定 d.当用户多次输入不存在的 ... 
- python成长之路第三篇(1)_初识函数
		目录: 函数 为什么要使用函数 什么是函数 函数的返回值 文档化函数 函数传参数 文件操作(二) 1.文件操作的步骤 2.文件的内置方法 函数: 一.为什么要使用函数 在日常写代码中,我们会发现有很多 ... 
- python成长之路第三篇(3)_内置函数及生成器迭代器
		打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.lambda表达式 2.map内置函数 3.filter内置函数 4.reduce内置函数 5.yield生成器 ... 
- python成长之路第三篇(2)_正则表达式
		打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.什么是正则表达式,python中得正则简介 2.re模块的内容 3.小练习 一.什么是正则表达式(re) 正则表 ... 
- Python人工智能之路 - 第三篇 : PyAudio 实现录音 自动化交互实现问答
		Python 很强大其原因就是因为它庞大的三方库 , 资源是非常的丰富 , 当然也不会缺少关于音频的库 关于音频, PyAudio 这个库, 可以实现开启麦克风录音, 可以播放音频文件等等,此刻我们不 ... 
- Python之路(第三篇):Python基本数据类型字符串(二)
		一.基本数据类型1.字符串 str字符串方法介绍(二)a --expandtabs( ) expandtabs( ) 把字符串中的 tab 符号('\t')转为空格参数默认为8,注意字符串原有的空格也 ... 
随机推荐
- 移动端性能优化动态加载JS、CSS
			JS CODE (function() { /** * update: * 1.0 */ var version = "insure 1.1.0"; var Zepto = Zep ... 
- laravel redis
			安装配置redis服务器 $ wget http://download.redis.io/releases/redis-3.0.5.tar.gz $ tar xzf redis-.tar.gz $ c ... 
- UIWebView如何获取内容高度
			iOS UIWebView如何获取到内容的高度呢?我们经常会遇到项目中需要使用UIWebView来加载H5页面,但是页面的高度并不确定,而我们前端需要根据内容的高度呈现出来,且不允许webview滚动 ... 
- 将类型(int,string,…)转换为 T 类型
			方法定义: private static T GetValueByKey<T>(string key) where T : IConvertible { T localVal=defaul ... 
- mysql重点--执行计划
			explain SQL: 在sql语句前面加explain实现"执行计划"的功能.功能是比较准确的显示将要执行这条sql语句的运行状况. select_simple 是查询类型:t ... 
- logstash使用操作部分
			1.logstash的概念及特点.概念:logstash是一个数据采集.加工处理以及传输(输出)的工具.特点: - 所有类型的数据集中处理 - 不同模式和格式数据的正常化 - 自定义日志格式的迅速扩展 ... 
- linux常用经典命令
			1.查看cpu # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 #物理cpu个数 ... 
- tr用法
			参考: http://man.linuxde.net/tr shell脚本学习指南 语法 tr [options] source-char-list replace-char-list 用途 转换字符 ... 
- AngularJS Best Practices: Directory Structure
			app/----- common/ // Acts as reusable components for your app---------- header/--------------- contr ... 
- RDIFramework.NET 中多表关联查询分页实例
			RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ... 
