Python 三级菜单

任务要求:

  1、列出菜单信息提供用户选择

  2、根据用户选择进入下级菜单

  3、用户输入b返回上一级菜单

  4、用户输入q直接退出系统

 

流程图:

 

 代码:

1、主文件

#!/usr/bin/env python
# -*- conding:utf-8 -*-
# create a menu system# 20170911
# evescnimport sys
import yamldef myinput():# 输出提示信息的函数print("输入q退出系统")print("输入b返回上一级菜单")key = input("请输入对应的名称进入下级菜单:")return keydef mycity(key):# 输出市级别信息的函数print("-------------------------------------------------")for i, m in enumerate(menu[str(key)], 1):for item in m.keys():print("    ", i, item)key = myinput()return keydef mycounty(key1, key2):# 输出县基本信息的函数print("-------------------------------------------------")for i, m in enumerate(menu[str(key1)], 1):for item in m.keys():if item == key2:for i, item in enumerate(m[str(item)], 1):print("    ", i, item)key = myinput()return keydef mymunici(key):# 输出4个直辖市的函数print("-------------------------------------------------")for i, item in enumerate(menu[str(key)], 1):print("    ", i, item)key = myinput()return keydef mysar(key):# 输出特别行政区的函数print("-------------------------------------------------")# for i, item in enumerate(menu[str(key)], 1):i = 1print("    ", i, menu[str(key)])key = myinput()return keydef exitorcontinue(key):# 判断用户键入的值,以便判断是否退出或返回上一级if key == 'q':sys.exit("感谢使用查询系统")elif key == 'b':return 0# 导入yaml文件,并转换为字典格式
f = open('pro.yaml', 'r', encoding='utf-8')
menu = yaml.load(f)# 定义直辖市列表,判断用户输入是否为直辖市
municipalities = ['北京市', '上海市', '重庆市', '天津市', ]# 定义特别行政区
SAR = ['香港', '澳门', '台湾', '钓鱼岛', ]# 定义在省级错误次数
n = 3while True:if n == 0:  # 3次输入不正确直接退出系统sys.exit("感谢使用查询系统")print("-------------------------------------------------")for i, item in enumerate(menu.keys(), 1):    # 列出整个省级菜单print("    ", i, item)key1 = myinput()if key1 == 'q' or key1 == 'b':    # 判断此次键入的值是否为q,bsys.exit("感谢使用查询系统")if key1 not in menu.keys():    # 判断此次键入的值是否在所有可选的省级菜单中n -= 1print("-------------------------------------------------")print("你输入的省份不对,请重新输入")print("你还有%s次机会,否则将直接退出系统" %n)continuewhile True:if key1 in municipalities:    # 判断是否属于直辖市key2 = mymunici(key1)if exitorcontinue(key2) == 0:breakelif key1 in SAR:    # 判断是否属于特别行政区key2 = mysar(key1)if exitorcontinue(key2) == 0:breakelse:   # 不属于直辖市key2 = mycity(key1)if exitorcontinue(key2) == 0:breakwhile True:    # 查找第三级县菜单key3 = mycounty(key1, key2)if exitorcontinue(key3) == 0:break
menu

 

2、省市县文件

香港:香港
澳门:澳门
台湾:台湾
钓鱼岛:钓鱼岛
北京市:- 市辖区- 东城区- 西城区- 崇文区- 宣武区- 朝阳区- 丰台区- 石景山区- 海淀区- 门头沟区- 房山区- 通州区- 顺义区- 昌平区- 大兴区- 怀柔区- 平谷区- 密云县- 延庆县
天津市:- 市辖区- 和平区- 河东区- 河西区- 南开区- 河北区- 红桥区- 塘沽区- 汉沽区- 大港区- 东丽区- 西青区- 津南区- 北辰区- 武清区- 宝坻区- 宁河县- 静海县- 蓟 县
河北省:- 石家庄市:- 长安区- 桥东区- 桥西区- 新华区- 井陉矿区- 裕华区- 井陉县- 正定县- 栾城县- 行唐县- 灵寿县- 高邑县- 深泽县- 赞皇县- 无极县- 平山县- 元氏县- 赵县- 辛集市- 藁城市- 晋州市- 新乐市- 鹿泉市- 唐山市:- 路南区- 路北区- 古冶区- 开平区- 丰南区- 丰润区- 滦县- 滦南县- 乐亭县- 迁西县- 玉田县- 唐海县- 遵化市- 迁安市- 秦皇岛市:- 海港区- 山海关区- 北戴河区- 青龙满族自治县- 昌黎县- 抚宁县- 卢龙县- 邯郸市:- 邯山区- 丛台区- 复兴区- 峰峰矿区- 邯郸县- 临漳县- 成安县- 大名县- 涉 县- 磁 县- 肥乡县- 永年县- 邱 县- 鸡泽县- 广平县- 馆陶县- 魏 县- 曲周县- 武安市- 邢台市:- 桥东区- 桥西区- 邢台县- 临城县- 内丘县- 柏乡县- 隆尧县- 任 县- 南和县- 宁晋县- 巨鹿县- 新河县- 广宗县- 平乡县- 威 县- 清河县- 临西县- 南宫市- 沙河市- 保定市:- 新市区- 北市区- 南市区- 满城县- 清苑县- 涞水县- 阜平县- 徐水县- 定兴县- 唐 县- 高阳县- 容城县- 涞源县- 望都县- 安新县- 易 县- 曲阳县- 蠡 县- 顺平县- 博野县- 雄 县- 涿州市- 定州市- 安国市- 高碑店市- 张家口市:- 桥东区- 桥西区- 宣化区- 下花园区- 宣化县- 张北县- 康保县- 沽源县- 尚义县- 蔚 县- 阳原县- 怀安县- 万全县- 怀来县- 涿鹿县- 赤城县- 崇礼县- 承德市:- 双桥区- 双滦区- 鹰手营子矿区- 承德县- 兴隆县- 平泉县- 滦平县- 隆化县- 丰宁满族自治县- 宽城满族自治县- 围场满族蒙古族自治县- 沧州市:- 新华区- 运河区- 沧 县- 青 县- 东光县- 海兴县- 盐山县- 肃宁县- 南皮县- 吴桥县- 献 县- 孟村回族自治县- 泊头市- 任丘市- 黄骅市- 河间市- 廊坊市:- 安次区- 广阳区- 固安县- 永清县- 香河县- 大城县- 文安县- 大厂回族自治县- 霸州市- 三河市- 衡水市:- 桃城区- 枣强县- 武邑县- 武强县- 饶阳县- 安平县- 故城县- 景 县- 阜城县- 冀州市- 深州市
山西省:- 太原市:- 小店区- 迎泽区- 杏花岭区- 尖草坪区- 万柏林区- 晋源区- 清徐县- 阳曲县- 娄烦县- 古交市- 大同市:- 城 区- 矿 区- 南郊区- 新荣区- 阳高县- 天镇县- 广灵县- 灵丘县- 浑源县- 左云县- 大同县- 阳泉市:- 城 区- 矿 区- 郊 区- 平定县- 盂 县- 长治市:- 城 区- 郊 区- 长治县- 襄垣县- 屯留县- 平顺县- 黎城县- 壶关县- 长子县- 武乡县- 沁 县- 沁源县- 潞城市- 晋城市:- 城 区- 沁水县- 阳城县- 陵川县- 泽州县- 高平市- 朔城区- 平鲁区- 山阴县- 应 县- 右玉县- 怀仁县- 晋中市:- 榆次区- 榆社县- 左权县- 和顺县- 昔阳县- 寿阳县- 太谷县- 祁 县- 平遥县- 灵石县- 介休市- 运城市:- 盐湖区- 临猗县- 万荣县- 闻喜县- 稷山县- 新绛县- 绛 县- 垣曲县- 夏 县- 平陆县- 芮城县- 永济市- 河津市- 忻州市:- 忻府区- 定襄县- 五台县- 代 县- 繁峙县- 宁武县- 静乐县- 神池县- 五寨县- 岢岚县- 河曲县- 保德县- 偏关县- 原平市- 临汾市:- 尧都区- 曲沃县- 翼城县- 襄汾县- 洪洞县- 古 县- 安泽县- 浮山县- 吉 县- 乡宁县- 大宁县- 隰 县- 永和县- 蒲 县- 汾西县- 侯马市- 霍州市- 吕梁市:- 离石区- 文水县- 交城县- 兴 县- 临 县- 柳林县- 石楼县- 岚 县- 方山县- 中阳县- 交口县- 孝义市- 汾阳市
内蒙古自治区:- 呼和浩特市:- 新城区- 回民区- 玉泉区- 赛罕区- 土默特左旗- 托克托县- 和林格尔县- 清水河县- 武川县- 包头市:- 东河区- 昆都仑区- 青山区- 石拐区- 白云矿区- 九原区- 土默特右旗- 固阳县- 达尔罕茂明安联合旗- 海勃湾区- 海南区- 乌达区- 赤峰市:- 红山区- 元宝山区- 松山区- 阿鲁科尔沁旗- 巴林左旗- 巴林右旗- 林西县- 克什克腾旗- 翁牛特旗- 喀喇沁旗- 宁城县- 敖汉旗- 通辽市:- 科尔沁区- 科尔沁左翼中旗- 科尔沁左翼后旗- 开鲁县- 库伦旗- 奈曼旗- 扎鲁特旗- 霍林郭勒市- 鄂尔多斯市:- 东胜区- 达拉特旗- 准格尔旗- 鄂托克前旗- 鄂托克旗- 杭锦旗- 乌审旗- 伊金霍洛旗- 呼伦贝尔市:- 海拉尔区- 阿荣旗- 莫力达瓦达斡尔族自治旗- 鄂伦春自治旗- 鄂温克族自治旗- 陈巴尔虎旗- 新巴尔虎左旗- 新巴尔虎右旗- 满洲里市- 牙克石市- 扎兰屯市- 额尔古纳市- 根河市- 巴彦淖尔市:- 临河区- 五原县- 磴口县- 乌拉特前旗- 乌拉特中旗- 乌拉特后旗- 杭锦后旗- 乌兰察布市:- 集宁区- 卓资县- 化德县- 商都县- 兴和县- 凉城县- 察哈尔右翼前旗- 察哈尔右翼中旗- 察哈尔右翼后旗- 四子王旗- 丰镇市- 兴安盟:- 乌兰浩特市- 阿尔山市- 科尔沁右翼前旗- 科尔沁右翼中旗- 扎赉特旗- 突泉县- 锡林郭勒盟:- 二连浩特市- 锡林浩特市- 阿巴嘎旗- 苏尼特左旗- 苏尼特右旗- 东乌珠穆沁旗- 西乌珠穆沁旗- 太仆寺旗- 镶黄旗- 正镶白旗- 正蓝旗- 多伦县- 阿拉善盟:- 阿拉善左旗- 阿拉善右旗- 额济纳旗
辽宁省:- 沈阳市:- 和平区- 沈河区- 大东区- 皇姑区- 铁西区- 苏家屯区- 东陵区- 沈北新区*- 于洪区- 辽中县- 康平县- 法库县- 新民市- 大连市:- 中山区- 西岗区- 沙河口区- 甘井子区- 旅顺口区- 金州区- 长海县- 瓦房店市- 普兰店市- 庄河市- 鞍山市:- 铁东区- 铁西区- 立山区- 千山区- 台安县- 岫岩满族自治县- 海城市- 抚顺市:- 新抚区- 东洲区- 望花区- 顺城区- 抚顺县- 新宾满族自治县- 清原满族自治县- 本溪市:- 平山区- 溪湖区- 明山区- 南芬区- 本溪满族自治县- 桓仁满族自治县- 丹东市:- 元宝区- 振兴区- 振安区- 宽甸满族自治县- 东港市- 凤城市- 锦州市:- 古塔区- 凌河区- 太和区- 黑山县- 义 县- 凌海市- 北镇市*- 营口市:- 站前区- 西市区- 鲅鱼圈区- 老边区- 盖州市- 大石桥市- 阜新市:- 海州区- 新邱区- 太平区- 清河门区- 细河区- 阜新蒙古族自治县- 彰武县- 辽阳市:- 白塔区- 文圣区- 宏伟区- 弓长岭区- 太子河区- 辽阳县- 灯塔市- 盘锦市:- 双台子区- 兴隆台区- 大洼县- 盘山县- 铁岭市:- 银州区- 清河区- 铁岭县- 西丰县- 昌图县- 调兵山市- 开原市- 朝阳市- 市辖区- 双塔区- 龙城区- 朝阳县:- 建平县- 喀喇沁左翼蒙古族自治县- 北票市- 凌源市- 葫芦岛市:- 连山区- 龙港区- 南票区- 绥中县- 建昌县- 兴城市
吉林省:- 长春市:- 南关区- 宽城区- 朝阳区- 二道区- 绿园区- 双阳区- 农安县- 九台市- 榆树市- 德惠市
省市县文件

  

测试结果: 

-------------------------------------------------1 辽宁省2 钓鱼岛3 北京市4 天津市5 吉林省6 河北省7 台湾8 内蒙古自治区9 山西省10 香港11 澳门
输入q退出系统
输入b返回上一级菜单
请输入对应的名称进入下级菜单:台湾
-------------------------------------------------1 台湾
输入q退出系统
输入b返回上一级菜单
请输入对应的名称进入下级菜单:b
-------------------------------------------------1 辽宁省2 钓鱼岛3 北京市4 天津市5 吉林省6 河北省7 台湾8 内蒙古自治区9 山西省10 香港11 澳门
输入q退出系统
输入b返回上一级菜单
请输入对应的名称进入下级菜单:北京市
-------------------------------------------------1 市辖区2 东城区3 西城区4 崇文区5 宣武区6 朝阳区7 丰台区8 石景山区9 海淀区10 门头沟区11 房山区12 通州区13 顺义区14 昌平区15 大兴区16 怀柔区17 平谷区18 密云县19 延庆县
输入q退出系统
输入b返回上一级菜单
请输入对应的名称进入下级菜单:b
-------------------------------------------------1 辽宁省2 钓鱼岛3 北京市4 天津市5 吉林省6 河北省7 台湾8 内蒙古自治区9 山西省10 香港11 澳门
输入q退出系统
输入b返回上一级菜单
请输入对应的名称进入下级菜单:山西省
-------------------------------------------------1 太原市2 大同市3 阳泉市4 长治市5 晋城市6 晋中市7 运城市8 忻州市9 临汾市10 吕梁市
输入q退出系统
输入b返回上一级菜单
请输入对应的名称进入下级菜单:太原市
-------------------------------------------------1 小店区2 迎泽区3 杏花岭区4 尖草坪区5 万柏林区6 晋源区7 清徐县8 阳曲县9 娄烦县10 古交市
输入q退出系统
输入b返回上一级菜单
请输入对应的名称进入下级菜单:b
-------------------------------------------------1 太原市2 大同市3 阳泉市4 长治市5 晋城市6 晋中市7 运城市8 忻州市9 临汾市10 吕梁市
输入q退出系统
输入b返回上一级菜单
请输入对应的名称进入下级菜单:q
感谢使用查询系统
Result

 

转载于:https://www.cnblogs.com/python-gm/p/7552156.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xp系统连接服务器工具,xp系统远程连接服务器

xp系统远程连接服务器 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。华为云帮助中心,为用户提供产品简介、价格说明、…

java面试题switch支持哪些数据类型

switch语句的数据类型: 基本数据类型:byte, short, char, int 包装数据类型:Byte, Short, Character, Integer 枚举类型:Enum 字符串类型:String(Jdk 7 开始支持)

理解文档对象模型(3)

这篇DOM说一说饱受争议window对象,还好window对象已经作为HTML5的一部分被添加到HTML规范之中了 1. 获取window 可以使用两种方法获取window对象, 正规的HTML5方式是在document对象上使用defaultView属性; 另一种则是使用浏览器都支持的全局…

使用ETag识别ajax,如何使用jQuery AJAX请求访问ETag头?

我正在使用jQuery ajax调用来请求来自发送HTTP响应头中的ETag的服务器的数据。我需要访问标题,但是当请求成功并调用jqXHR.getAllResponseHeaders()时,我只能看到服务器返回的标题的子集。如何使用jQuery AJAX请求访问ETag头?实施例&#xff…

Error:java: Compilation failed: internal java compiler error 解决办法

错误原因 导致这个错误的原因主要是因为jdk版本问题,此处有两个原因,一个是编译版本不匹配,一个是当前项目jdk版本不支持。 1:mac选择Preferences windows找到Setting 找到Java Complier 右边选择1.8 2:找到File ->Project Structure-&…

VC内存泄露检查工具:Visual Leak Detector

www.diybl.com 时间:2009-04-12 作者:匿名 编辑:sky 初识Visual Leak Detector 灵活自由是C/C语言的一大特色,而这也为C/C程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问 …

结对-人机对战象棋游戏-开发过程

我们实现了框架的规范把框架放在网页的居中位置,width325 height402.的一个框架 转载于:https://www.cnblogs.com/lzy616/p/7560408.html

服务器的虚拟主机用途,服务器的虚拟主机用途

服务器的虚拟主机用途 内容精选换一换为了对源端服务器进行迁移可行性评估以及为后续目的端服务器的选择和配置提供必要性数据,迁移Agent会收集源端服务器的相关信息并上报到主机迁移服务。收集的Windows操作系统的具体数据如表1所示。收集的Linux操作系统的具体数据…

2台无线路由器互连

2台TP-LINK无线路由器办公室电脑无法上网通过连接前台路由器实现上网前台用1台路由器有线接2台电脑办公室用1台路由器分接3台电脑由于位置关系和房屋结构不利于走网线所以用2台无线路由器实现互联操作的大体步骤1、由浏览器进入路由器WEB控制界面2、关闭路由器DHCP功能3、在无线…

java8使用filter(Objects::nonNull) 过滤null

list.stream().filter(Objects::nonNull).collect(Collectors.toList());

vi常用快捷键

1)移动光标h :光标左移一个字符j :光标上移一个字符k :光标下移一个字符l :光标右移一个字符0 :光标移至行首$ :光标移至行尾H :光标移至屏幕首行M :光标移至屏幕中间L :…

华为帐号忘记显示服务器繁忙,显示云服务器繁忙怎么操作

显示云服务器繁忙怎么操作 内容精选换一换在您申请了云耀云服务器后,可以通过管理控制台查看和管理您的云耀云服务器。本节介绍如何查看云耀云服务器的详细配置,包括云耀云服务器名称、镜像信息、系统盘、数据盘、安全组、弹性公网IP等信息。登录管理控制…

C#令人迷惑的DateTime:世界标准时间还是本地时间?

先来看一段代码: 复制内容到剪贴板程序代码DateTime time DateTime.Parse("2013-07-05 00:00:00");Console.WriteLine(time.ToUniversalTime()); //2013/7/4 16:00:00Console.WriteLine(time.ToLocalTime()); //2013/7/5 8:00:00这让人搞不清楚DateTime的…

集合删除元素技巧 removeIf

集合删除元素技巧 removeIf removeIf() 是从 JDK1.8 开始提供的。 之前我们删除 List 中的元素的话,一般使用循环遍历实现。今天发现 removeIf 很好用,记录一下。

话里话外:猎人讲小事——兔子、凤凰与猎狗

一只兔子在森林里迷了路,去请教一只凤凰,凤凰告诉他,一直向东方走就可以了,然后还送给了兔子一个指南针,并教会兔子如何使用。兔子生性胆小,又花了100元雇了个猎狗带路。一兔一狗拿着指南针,向东…

Android弹出Dialog使用举例

Android详细的对话框AlertDialog.Builder使用方法 7种形式的Android Dialog使用举例 第30章、常见对话框之一AlertDialog(从零开始学Android) 转载于:https://www.cnblogs.com/defineconst/p/7574458.html

LAMP搭建之三:php编译安装

1、下载php的稳定源代码包。我这里下载的是php-5.2.3。php官网从google一搜就找到了。2、解压tar jxvf php-5.2.3.tar.bz2 -C /usr/src/cd /usr/src/php-5.2.3/3、配置程序./configure --prefix/usr/local/php --with-apxs2/usr/local/apache2/bin/apxs --with-config-file-pat…

Mysql查看慢查询日志是否开启 show VARIABLES like ‘slow_query%‘;

慢查询日志 在讲读操作变慢的原因之前我们先来看看是如何定位慢 SQL 的。Mysql 中有一个叫作慢查询日志的东西,它是用来记录超过指定时间的 SQL 语句的。默认情况下是关闭的,通过手动配置才能开启慢查询日志进行定位。 具体的配置方式是这样的&#xf…

应用程序 /dev/rtc 编程 获取时间 2011-12-13 01:01:06【转】

本文转载自:http://blog.chinaunix.net/uid-16785183-id-3040310.html 分类: 原文地址:应用程序 /dev/rtc 编程 获取时间 作者:yuweixian4230 找的一些rtc资料:系统时钟硬件与LINUX时间表示二 之 Linux内核对RTC的编…

GIPS 详细介绍

转自:百度百科 Global IP Sound(GIPS)协议,著名的语音聊天工具skype所使用的协议   Global IP Solutions (GIPS) 的前身为Global IP Sound (GIPS),专为数据包网络的实时通信应用市场,开发行业领先的嵌入式媒体处理…