任务要求:

  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

Python 三级菜单相关推荐

  1. python三级菜单(优化版)

    python三级菜单(优化版) #!/usr/bin/env python #-*- coding:utf-8 -*-dic = {'北京': {'东城':{'沙河': ['沙河机场', '链家'], ...

  2. python三级菜单设计题目_Python三级菜单

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 三级菜单:打印省.市.县三级菜单. 可返回上一级,可随时退出程序首先准备基础数据 ...

  3. python三级菜单_python三级菜单

    需求:编写三级菜单 1.菜单需求: 一级菜单:            北京                                  山西 二级菜单:    朝阳                ...

  4. Python——三级菜单

    #三级菜单函数 menu = {'北京':{海淀:{'五道口':{}'中关村':{}'上帝':{}}'昌平':{}'朝阳':{}'东城':{}},'上海':{}'山东':{} } def threeM ...

  5. python三级菜单_Python 三级菜单

    三级菜单实现的基本原理就是在字典中vaules也可以是字典,所以可以层层嵌套形成多级的格局 我们可以来看一下代码: # 一级菜单 def menu1(): print('一级菜单'.center(40 ...

  6. Python三级菜单初学-脑残版

    #author Fdatas = {"实务": {"主体": {"政府": {"利益": {"政治利益&quo ...

  7. python自动化办公都能做什么菜-Python自动化开发学习之三级菜单制作

    本文实例为大家分享了Python三级菜单展示的具体代码,供大家参考,具体内容如下 作业需求: (1)运行程序输出第一级菜单 (2)选择一级菜单某项,输出二级菜单,同理输出三级菜单 (3)让用户选择是否 ...

  8. python自动化可以做什么菜_Python自动化开发学习之三级菜单制作

    本文实例为大家分享了Python三级菜单展示的具体代码,供大家参考,具体内容如下 作业需求: (1)运行程序输出第一级菜单 (2)选择一级菜单某项,输出二级菜单,同理输出三级菜单 (3)让用户选择是否 ...

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

    直接上需求: 实现一个多级菜单 三级菜单的实现 可以依次选择进入各个子菜单 也可以返回上级菜单 所需知识 列表 字典 需求也比较简单,但实际上做起来还是遇到许多的问题,我这边主要用到的知识点大概就是 ...

最新文章

  1. hdu 2879【留坑】
  2. 进程隐藏与进程保护(SSDT Hook 实现)(二)
  3. java future用法_纯干货:Java学习过程中的21个知识点和技术点
  4. 80网口打印机ip固定工具_打印机网络打印
  5. day14 java的super
  6. React Native Modal组件 Android覆盖状态栏
  7. 5年了...Capstone 终于升级到4.0!
  8. 文件上传之IIS6.0解析漏洞
  9. MVC获取客户端IP地址方法
  10. 计算机辅助 高等数学教学,高等数学教学方法
  11. WIN7远程桌面连接显示凭据不工作的解决方法
  12. Spring Boot系列 —(一)手把手搭建 SpringBoot 项目
  13. spark 集群优化
  14. 进入虚拟机的任务管理器命令
  15. c#实现 正弦sin、反正弦arcsin,正切tan、反正切arctan:求角度值
  16. moment 秒级时间戳转格式
  17. 2021美食林全球餐厅精选榜公布,这里有一份美食地图请查收!
  18. linux系统--文件目录
  19. 2021年河南省高考数据统计:河南省参加考试人数占报名人数的83.7%,本土156所高校(1所211大学)
  20. BUUCTF:[GKCTF2020]Sail a boat down the river

热门文章

  1. [pytorch、学习] - 5.7 使用重复元素的网络(VGG)
  2. [pytorch、学习] - 5.5 卷积神经网络(LeNet)
  3. es6 --- Thunkify源码分析
  4. 如何使用DNS反向映射来扫描IPv6地址?
  5. 分布式搜索 Elasticsearch —— 节点实例化
  6. [译]多线程网络服务模型
  7. SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用
  8. android jni java类型与c语言类型互换
  9. MySQL数据库添加一个字段
  10. 实例讲解override和new的区别