python (个人学习笔记1.0系列番外)--利用字典与其调用函数建立,省市县三级菜单(更改原版本代码,并添加一个化简版代码)
xiechen@[TOC]
一、省市县三菜单简述
三级菜单:可让用户选择查看全国各省,各市,各县分级名单。
可实现:
可返回上一级菜单
可随时退出菜单
二、代码实现
1.逻辑性化简版!!!!(算法化简,但需要一些思考来理解)
注意:当前各省份已录完,市县只录入大连市,及其直辖县,如需实现完整菜单,请自行补全
region = {'河北省':{},'山西省':{},'辽宁省':{'沈阳市':{},'大连市':{'中山区','西岗区','沙河口区','甘井子区','旅顺口区','金州区','普兰店区','长海县','瓦房店市','庄河市'},'鞍山市':{},'抚顺市':{},'本溪市':{},'丹东市':{},'锦州市':{},'营口市':{},'阜新市':{},'辽阳市':{},'盘锦市':{},'铁岭市':{},'朝阳市':{},'葫芦岛市':{}},'吉林省':{},'黑龙江省':{},'江苏省':{},'浙江省':{},'安徽省':{},'福建省':{},'江西省':{},'山东省':{},'河南省':{},'湖北省':{},'湖南省':{},'广东省':{},'海南省':{},'四川省':{},'贵州省':{},'云南省':{},'陕西省':{},'甘肃省':{},'青海省':{},'台湾省':{},'内蒙古自治区':{},'广西壮族自治区':{},'西藏自治区':{},'宁夏回族自治区':{},'新疆维吾尔自治区':{},'北京市':{},'天津市':{},'上海市':{},'重庆市':{},'香港特别行政区':{},'澳门特别行政区':{}}regional_record = region
region_list = [] #使用列表来存入每次输出的区域名,每次输出的区域名将会在列表中,另外形成一个嵌套的小列表,即保存父级分区while True:for i,v in enumerate(regional_record,1): #打印分区键值print(i,'----',v)show_region = input("请输入您需要查看的区域(如果退出请输入:quit,返回上一层:last)信息:")if show_region == 'quit': #退出程序exit("\n----欢迎下次使用----")elif show_region == 'last':if region_list: #判断列表是否被删空regional_record = region_list.pop() #pop()默认从列表最后删除元素,并返回删除的值,所以每次都会将上一分区的键值删除并返回给打印分区键名变量,完成返回上一级操作else:region_list.append(regional_record) #在每次进入下一层分区时,将当前分区的键值添加到列表中regional_record = regional_record[show_region] #进入下一分区
输出样例(省——辽宁省——大连市——及其直辖县):
1 ---- 河北省
2 ---- 山西省
3 ---- 辽宁省
4 ---- 吉林省
5 ---- 黑龙江省
6 ---- 江苏省
7 ---- 浙江省
8 ---- 安徽省
9 ---- 福建省
10 ---- 江西省
11 ---- 山东省
12 ---- 河南省
13 ---- 湖北省
14 ---- 湖南省
15 ---- 广东省
16 ---- 海南省
17 ---- 四川省
18 ---- 贵州省
19 ---- 云南省
20 ---- 陕西省
21 ---- 甘肃省
22 ---- 青海省
23 ---- 台湾省
24 ---- 内蒙古自治区
25 ---- 广西壮族自治区
26 ---- 西藏自治区
27 ---- 宁夏回族自治区
28 ---- 新疆维吾尔自治区
29 ---- 北京市
30 ---- 天津市
31 ---- 上海市
32 ---- 重庆市
33 ---- 香港特别行政区
34 ---- 澳门特别行政区
请输入您需要查看的区域(如果退出请输入:quit,返回上一层:last)信息:辽宁省
1 ---- 沈阳市
2 ---- 大连市
3 ---- 鞍山市
4 ---- 抚顺市
5 ---- 本溪市
6 ---- 丹东市
7 ---- 锦州市
8 ---- 营口市
9 ---- 阜新市
10 ---- 辽阳市
11 ---- 盘锦市
12 ---- 铁岭市
13 ---- 朝阳市
14 ---- 葫芦岛市
请输入您需要查看的区域(如果退出请输入:quit,返回上一层:last)信息:大连市
1 ---- 庄河市
2 ---- 长海县
3 ---- 瓦房店市
4 ---- 金州区
5 ---- 中山区
6 ---- 沙河口区
7 ---- 旅顺口区
8 ---- 西岗区
9 ---- 普兰店区
10 ---- 甘井子区
请输入您需要查看的区域(如果退出请输入:quit,返回上一层:last)信息:quit----欢迎下次使用----
2.简易繁杂版!!(代码逻辑简单,按顺序理解即可)
注意:当前各省份已录完,市县只录入大连市,及其直辖县,如需实现完整菜单,请自行补全
region = {'河北省':{},'山西省':{},'辽宁省':{'沈阳市':{},'大连市':{'中山区','西岗区','沙河口区','甘井子区','旅顺口区','金州区','普兰店区','长海县','瓦房店市','庄河市'},'鞍山市':{},'抚顺市':{},'本溪市':{},'丹东市':{},'锦州市':{},'营口市':{},'阜新市':{},'辽阳市':{},'盘锦市':{},'铁岭市':{},'朝阳市':{},'葫芦岛市':{}},'吉林省':{},'黑龙江省':{},'江苏省':{},'浙江省':{},'安徽省':{},'福建省':{},'江西省':{},'山东省':{},'河南省':{},'湖北省':{},'湖南省':{},'广东省':{},'海南省':{},'四川省':{},'贵州省':{},'云南省':{},'陕西省':{},'甘肃省':{},'青海省':{},'台湾省':{},'内蒙古自治区':{},'广西壮族自治区':{},'西藏自治区':{},'宁夏回族自治区':{},'新疆维吾尔自治区':{},'北京市':{},'天津市':{},'上海市':{},'重庆市':{},'香港特别行政区':{},'澳门特别行政区':{}}while True:for i,v in enumerate(region.keys(),1): #打印分区键名print(i,'----',v)show_region = input("请选择您需要查看的省(直辖市,自治区,特别行政区)(退出:quit,返回上一层:last):")if show_region == 'quit': #退出程序exit("\n----欢迎下次使用----")if show_region not in region.keys(): #判断是否存在输入的键名print("\n未找到该区域,请重新输入\n")else:while True:for j,p in enumerate(region[show_region].keys(),1): #打印省份键名print(j,'----',p)show_province = input("请选择您需要查看的城市信息(退出:quit,返回上一层:last)::")if show_province == 'quit':exit(("\n----欢迎下次使用----"))if show_province == 'last':breakif show_province not in region[show_region].keys():print(print("\n未找到该区域名称,请重新输入\n"))else:for x,u in enumerate(region[show_region][show_province],1): #没有下一级键值对,所以直接输出该键对应的所有值print(x,'----',u)end_show = input("退出:quit,返回上一层:last\n请选择:")if end_show == 'quit':exit(("\n----欢迎下次使用----"))if end_show == 'last':continue
输出样例(省——辽宁省——大连市——及其直辖县):
1 ---- 河北省
2 ---- 山西省
3 ---- 辽宁省
4 ---- 吉林省
5 ---- 黑龙江省
6 ---- 江苏省
7 ---- 浙江省
8 ---- 安徽省
9 ---- 福建省
10 ---- 江西省
11 ---- 山东省
12 ---- 河南省
13 ---- 湖北省
14 ---- 湖南省
15 ---- 广东省
16 ---- 海南省
17 ---- 四川省
18 ---- 贵州省
19 ---- 云南省
20 ---- 陕西省
21 ---- 甘肃省
22 ---- 青海省
23 ---- 台湾省
24 ---- 内蒙古自治区
25 ---- 广西壮族自治区
26 ---- 西藏自治区
27 ---- 宁夏回族自治区
28 ---- 新疆维吾尔自治区
29 ---- 北京市
30 ---- 天津市
31 ---- 上海市
32 ---- 重庆市
33 ---- 香港特别行政区
34 ---- 澳门特别行政区
请选择您需要查看的省(直辖市,自治区,特别行政区)(退出:quit,返回上一层:last):辽宁省
0 ---- 沈阳市
1 ---- 大连市
2 ---- 鞍山市
3 ---- 抚顺市
4 ---- 本溪市
5 ---- 丹东市
6 ---- 锦州市
7 ---- 营口市
8 ---- 阜新市
9 ---- 辽阳市
10 ---- 盘锦市
11 ---- 铁岭市
12 ---- 朝阳市
13 ---- 葫芦岛市
请选择您需要查看的城市信息(退出:quit,返回上一层:last)::大连市
0 ---- 西岗区
1 ---- 普兰店区
2 ---- 沙河口区
3 ---- 瓦房店市
4 ---- 庄河市
5 ---- 金州区
6 ---- 中山区
7 ---- 长海县
8 ---- 旅顺口区
9 ---- 甘井子区
退出:quit,返回上一层:last
请选择:quit----欢迎下次使用----
感慨:
人与人之间的逻辑思维有时候真是相差离谱啊,自己苦思冥想想不出更好优化算法,化简代码的方法,但是别人就能别出心裁,简简单单就思考出解决办法。
真是学海无涯,淦!!!!!
看来只能,学多点东西来弥补那点逻辑上的空缺了…
(应该没人看到吧,毕竟看到这文章的人本来就没几个,还有,谁没事有简化版代码不看,看繁杂版代码看到最后)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
