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

现在做这个三级菜单简直是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. JAVA常见简答题

    一.基础知识 1.简述使用文本编辑器和 JDK 创建并运行 Java 应用程序的基本步骤. 答:①打开文本编辑器输入 Java 源程序: ②保存文件,文件名为源程序中 public 修饰类的类名,扩展 ...

  2. Mycat 介绍

    Mycat 是什么 Mycat是什么?从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了 MySQL协议的的Server,前端用户可以把它看作是一个数据库代理,用 MySQL客户端工具和命 ...

  3. poj 1562 dfs

    http://poj.org/problem?id=1562 #include<iostream> using namespace std; ,m=,sum=; ][]; ][]={-,, ...

  4. 单元测试er——为什么真的真的要写单元测试

    优点 为什么很多技术或者知识要说优点?因为有些道理看着很简单,大家表面上都觉得对,但是做的时候又不去做或者做不到.其中有一个很重要原因是骨子里或者潜意识并没有真实觉得这是对的,一旦想去做的时候同时会冒 ...

  5. Dynamics 365 Online-使用Azure Logic App 与 Dynamics 365 集成

    什么是Logic App? Azure Logic App 是微软发布的集成平台的产品,有助于生成,计划和自动完成工作流形式的流程,适合跨企业或组织集成,数据,系统和服务.与此同时,Logic App ...

  6. Algorithm --> KMP算法

    KMP算法 一.传统字符串匹配算法 /* * 从s中第sIndex位置开始匹配p * 若匹配成功,返回s中模式串p的起始index * 若匹配失败,返回-1 */ ) { ; || p.length( ...

  7. Algorithm --> 二进制中1的个数

    行文脉络 解法一——除法 解法二——移位 解法三——高效移位 解法四——查表 扩展问题——异或后转化为该问题 对于一个字节(8bit)的变量,求其二进制“1”的个数.例如6(二进制0000 0110) ...

  8. 将 Shiro 作为应用的权限基础 一:shiro的整体架构

    将 Shiro 作为应用的权限基础 一:shiro的整体架构 近来在做一个重量级的项目,其中权限.日志.报表.工作量由我负责,工作量还是蛮大的,不过想那么多干嘛,做就是了. 这段时间,接触的东西挺多, ...

  9. Nginx阻止对不明确主机名的请求

    在用户请求头中,有可能会有Host行不明确的情况,如果不想处理这类用户请求,那么可以定义一个默认的server来丢弃这类请求.例如 server{ listen default_server; ser ...

  10. Jmeter中正则表达式提取器使用详解

    在使用Jmeter过程中,会经常使用到正则表达式提取器提取器,虽然并不直接涉及到请求的测试,但是对于数据的传递起着很大的作用,本篇博文就是主要讲解关于正则表达式及其在Jmeter的Sampler中的调 ...