因为之前花力气完成了购物小程序的作业

现在做这个三级菜单简直是so easy!!

1.显示省级菜单
2.交互,提示用户输入要查看的省份(退出e)
2.1.用户正确输入列表中的省份
3.显示市级菜单
3.1交互,提示用户输入要查看的市(返回q/退出e)
4.显示县级菜单
4.1交互,提示用户输入(返回q/退出e)
4.2输入e
退出
4.3输入q
进入市级循环
4.4输入错误
提示重新输入
3.2输入e
退出
3.3输入q
进入省级循环
3.4输入错误
提示重新输入
2.2.输入e
退出
2.3.输入错误
提示重新输入

  • 先百度百科各个省份的行政规划(我心狠手辣的搜索了十多个),一般百科里面都是以表格的形式罗

列出来的,你不能直接复制到代码中,所以要用到其他软件excel表格和notepad++文本编辑器

  • 找到省份的行政规划表格后,复制粘贴到excel表格中,数据会像在百科中一样列成了几行几列,你要

删除不要的那几行数据,然后复制粘贴到notepad++文本编辑器中

  • 在notepad++文本编辑器中找到“搜索---替换”,将其中的“、”全部替换成“’,’”
  • 这样处理完,你的字典数据算是完成里一半了,接下来就需要你麻烦一点手动操作去完成字典。
  • 如果你有更快,更省事的方式,请你也分享给我

china_dic = {'山西省':[{'太原市':['小店区','迎泽区','杏花岭区','尖草坪区','万柏林区','晋源区','清徐县','阳曲县','娄烦县','古交市'],'大同市':['云州区','平城区','云冈区','新荣区','阳高县','天镇县','广灵县','灵丘县','浑源县','左云县'],
'朔州市':['朔城区','平鲁区','山阴县','应县','右玉县','怀仁县'],
'阳泉市':['城区','矿区','郊区','平定县','盂县'],
'吕梁市':['离石区','文水县','交城县','兴县','临县','柳林县','石楼县','岚县','方山县','中阳县','交口县','孝义市','汾阳市'],
'晋中市':['榆次区','榆社县','左权县','和顺县','昔阳县','寿阳县','太谷县','祁县','平遥县','灵石县','介休市'],
'长治市':['城区','郊区','长治县','襄垣县','屯留县','平顺县','黎城县','壶关县','长子县','武乡县','沁县','沁源县','潞城市'],
'晋城市':['城区','沁水县','阳城县','陵川县','泽州县','高平市'],
'临汾市':['尧都区','曲沃县','翼城县','襄汾县','洪洞县','古县','安泽县','浮山县','吉县','乡宁县','大宁县','隰县','永和县','蒲县','汾西县','侯马市','霍州市'],
'运城市':['盐湖区','临猗县','万荣县','闻喜县','稷山县','新绛县','绛县','垣曲县','夏县','平陆县','芮城县','永济市','河津市']}],
'陕西省':[{'西安市':['新城区','碑林区','莲湖区','灞桥区','未央区','雁塔区','阎良区','临潼区','长安区','高陵区','鄠邑区 [24] ','蓝田县','周至县']
,'宝鸡市':['渭滨区','金台区','陈仓区','凤翔县','岐山县','扶风县','眉县','陇县','千阳县','麟游县','凤县','太白县']
,'咸阳市':['秦都区','渭城区','兴平市','三原县','泾阳县','武功县','乾县','礼泉县','永寿县','彬县','长武县','旬邑县','淳化县']
,'渭南市':['临渭区','华州区','韩城市','华阴市','蒲城县','富平县','潼关县','大荔县','合阳县','澄城县','白水县']
,'铜川市':['耀州区','王益区','印台区','宜君县']
,'延安市':['宝塔区','安塞区','延长县','延川县','子长县','志丹县','吴起县','甘泉县','富县','洛川县','宜川县','黄龙县','黄陵县']
,'榆林市':['榆阳区','横山区','神木市','府谷县','靖边县','定边县','绥德县','米脂县','佳县','吴堡县','清涧县','子洲县']
,'安康市':['汉滨区','旬阳县','石泉县','平利县','汉阴县','宁陕县','紫阳县','岚皋县','镇坪县','白河县']
,'汉中市':['汉台区','南郑区','城固县','洋县','西乡县','勉县','宁强县','略阳县','镇巴县','留坝县','佛坪县']
,'商洛市':['商州区','洛南县','丹凤县','商南县','山阳县','镇安县','柞水县']
,'杨凌示范区':['杨陵区']}],
'四川省':[{'成都市':['锦江区','青羊区','金牛区','武侯区','成华区','青白江区','龙泉驿区','新都区','温江区','双流区','郫都区','金堂县','大邑县','蒲江县','新津县','都江堰市','彭州市','崇州市','邛崃市','简阳市']
,'绵阳市':['涪城区','游仙区','安州区','梓潼县','三台县','盐亭县','平武县','江油市','北川羌族自治县']
,'自贡市':['自流井区','贡井区','大安区','沿滩区','荣县','富顺县']
,'攀枝花市':['东区','西区','仁和区','米易县','盐边县']
,'泸州市':['江阳区','龙马潭区','纳溪区','泸县','合江县','叙永县','古蔺县']
,'德阳市':['旌阳区','罗江区','广汉市','什邡市','绵竹市','中江县']
,'广元市':['利州区','昭化区','朝天区','旺苍县','青川县','剑阁县','苍溪县']
,'遂宁市':['船山区','安居区','射洪县','蓬溪县','大英县']
,'内江市':['市中区','东兴区','资中县','威远县','隆昌市']
,'乐山市':['市中区','沙湾区','五通桥区','金口河区','犍为县','井研县','夹江县','沐川县','峨眉山市','峨边彝族自治县','马边彝族自治县']
,'资阳市':['雁江区','安岳县','乐至县']
,'宜宾市':['翠屏区','南溪区','宜宾县','江安县','长宁县','高县','筠连县','珙县','兴文县','屏山县']
,'南充市':['顺庆区','高坪区','嘉陵区','西充县','南部县','蓬安县','营山县','仪陇县','阆中市']
,'达州市':['通川区','达川区','宣汉县','开江县','大竹县','渠县','万源市']
,'雅安市':['雨城区','名山区','荥经县','汉源县','石棉县','天全县','芦山县','宝兴县']
,'阿坝藏族羌族自治州':['马尔康市','金川县','小金县','阿坝县','若尔盖县','红原县','壤塘县','汶川县','理县','茂县','松潘县','九寨沟县','黑水县']
,'甘孜藏族自治州':['康定市','泸定县','丹巴县','九龙县','雅江县','道孚县','炉霍县','甘孜县','新龙县','德格县','白玉县','石渠县','色达县','理塘县','巴塘县','乡城县','稻城县','得荣县']
,'凉山彝族自治州':['西昌市','德昌县','会理县','会东县','宁南县','普格县','布拖县','昭觉县','金阳县','雷波县','美姑县','甘洛县','越西县','喜德县','冕宁县','盐源县','木里藏族自治县']
,'广安市':['广安区','前锋区','邻水县','武胜县','岳池县,''华蓥市']
,'巴中市':['巴州区','恩阳区','平昌县','通江县','南江县']
,'眉山市':['东坡区','彭山区','仁寿县','丹棱县','青神县','洪雅县']}]}
flag_province = True
flag_city = True
flag_county = True
while flag_province == True:
for key in china_dic: #循环字典
print(key.strip('\n')) #打印字典的所有key(省级菜单)
want_province = input('在这里输入要查看的省份(退出按e)》》')
provice = china_dic.get(want_province,'None') #判断字典里有没有用户的输入,没有就返回none
if not provice == 'None':
while flag_city == True:
for i in china_dic[want_province][0].keys():
print(i)
want_city = input('在这里输入要查看的市(退出按e/返回上一级按q)》》')
city = china_dic[want_province][0].get(want_city,'None')
if not city == 'None':
while flag_county == True:
for i in china_dic[want_province][0][want_city]:
print(i)
want_count = input('退出按e/返回上一级按q》》')
if want_count == 'e':
print('感谢您使用本系统!')
flag_city = False #标志位取反,退出循环
flag_province = False
flag_county = False
elif want_count == 'q':
flag_county = False
else:
print('输入错误!请输入退出(e)/返回上一级(q)') elif want_city == 'e':
print('感谢您使用本系统!')
flag_city = False
flag_province =False
elif want_city == 'q':
break
else:
print('输入错误,请输入列表内的市!')
elif want_province == 'e':
print('感谢您使用本系统!')
break
else:
print('输入错误,请输入列表内的省份!')

老男孩python学习之作业二---三级菜单的更多相关文章

  1. Python学习第二天-编写三级菜单

    编写三级菜单:1. 运行程序输出第一级菜单2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单3. 菜单数据保存在文件中4. 让用户选择是否要退出5. 有返回上一级菜单的功能 # Author: z ...

  2. 老男孩python学习之作业一购物小程序

    想学编程由来已久 始终没有个结果,痛心不已 如今再次捡起来,望不负期望,不负岁月 ......一万字的废话...... 先介绍一下我的自学课程吧 "路飞学城"的<python ...

  3. python作业:三级菜单(第一周)

    一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二.三级菜单 ...

  4. Python初学者第十三天 三级菜单程序小作业

    13day 作业题目: 三级菜单 作业需求: 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村' ...

  5. Python学习day5作业

    目录 Python学习day5作业 ATM和购物商城 1. 程序说明 2. 基本流程图 3. 程序测试帐号 4. 程序结构: 5. 程序测试 title: Python学习day5作业 tags: p ...

  6. Python学习笔记(二)——列表

    Python学习笔记(二)--列表 Python中的列表可以存放任何数据类型 >>> list1 = ['Hello','this','is','GUN',123,['I','Lov ...

  7. python学习(10)字典学习,写一个三级菜单程序

    学习了字典的应用.按老师的要求写一个三级菜单程序. 三级菜单程序需求如下: 1.深圳市的区--街道--社区---小区4级 2.建立一个字典,把各级区域都装进字典里 3.用户可以从1级进入2级再进入3级 ...

  8. day17 python递归案例(二分查找,三级菜单)

    递归函数与三级菜单 menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {} ...

  9. Python之双色球选购和三级菜单问题

    1:双色球选购# 1 双色球(假设一共八个球,6个红球,球号1-32.2个蓝球,球号1-16)# 2 确保用户不能重复选择,不能超出范围# 3 用户输入有误时有相应的错误提示# 4 最后展示用户选择的 ...

随机推荐

  1. kubernetes关键概念总结

    service 每个service对应一个cluster IP,cluster IP对应的服务网段最初是在配置kube-apiserver.kube-controller-manager和kube-p ...

  2. PHP MVC框架核心类

    PHP MVC框架核心类 现在我们举几个核心框架的例子演示:在framework/core下建立一个Framework.class.php的文件.写入以下代码: // framework/core/F ...

  3. Java爬虫爬取网站电影下载链接

    之前有看过一段时间爬虫,了解了爬虫的原理,以及一些实现的方法,本项目完成于半年前,一直放在那里,现在和大家分享出来. 网络爬虫简单的原理就是把程序想象成为一个小虫子,一旦进去了一个大门,这个小虫子就像 ...

  4. 解析xml文件的四种方式

    什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...

  5. oracle session数激增排查过程

    我们的生产系统使用的是oracle 11G RAC,昨天突然收到微信告警通知session数达到450个,平时的session数在200个左右. select username,status,mach ...

  6. Java NIO系列教程(六) 多路复用器Selector

    多路复用器Selector是Java NIO编程的基础,熟练地掌握Selector对于掌握NIO编程至关重要.多路复用器提供选择已经就绪的任务的能力.简单来讲,Selector会不断地轮询注册在其上的 ...

  7. Idea  调试代码

    ---恢复内容开始--- set DEBUG_PORT=8787 set JAVA_DEBUG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,addr ...

  8. 【评分】集美大学软件工程1413班工程项目管理个人作业2——APP案例分析

    [评分]个人作业2--APP案例分析 作业要求 作业地址及完成情况 博文要求 通过分析你选中的产品,结合阅读<构建之法>,写一篇随笔,包含下述三个环节的所有要求. 第一部分 调研, 评测 ...

  9. 团队作业4——第一次项目冲刺(Alpha版本)11.18

    a. 提供当天站立式会议照片一张 举行站立式会议,讨论项目安排: 整理各自的任务汇报: 全分享遇到的困难一起讨论: 讨论接下来的计划: b. 每个人的工作 (有work item 的ID) 1.前两天 ...

  10. docopt——好用的Python命令行参数解释器

    Qingchat使用的命令行参数解释器是 docopt,用下来感觉非常棒,所以决定介绍一下这个库.( 奉劝各位看官,真爱生命,远离argparse. ) 介绍 docopt 本质上是在 Python ...