地区分三层结构例如:
大中华地区一级划分:
华东
华中
华北
西南
特别行政区
华南
-------------------------------------------------
请输入你要查看的大中华地区名字:华中
------------------包含的省名字二级:-----------------
湖北
湖南
河南
-------------------------------------------------
请输入你要查看的省名字:湖北
--------------包含的城市名三级:-------------------
程序大概的思路和逻辑:
1 将大中华地区划用字典列表来构造,用key取省或者地市列表,用for遍历显示字典或者列表的元素
2 根据整个字典的key,得到省列表,遍历打印省的名字列表
3 设置用于跳出外循环的flag(跳出嵌套循环)
4 两层嵌套循环,外循环for指定3次固定循环,3次输入省名字错误,程序退出(在外循环for后,通过else来实现)
内循环while True是死循环,不指定次数(地市名字输入错误后,会一直要求输入,直到输入正确为止),通过break退出内循环
5 通过整个字典的key得到省列表,通过省字典的key得到地市列表,遍历打印地市的名字列表
6 判断输入的地市是否在省字典中,在的话,通过省字典的key,for遍历打印城市的名字列表不在的话,提示"输入的省名字不对,请重新输入",continue跳出当次迭代(循环),继续输入省名字还在内循环while中
7 打印城市表后,2个选择,1是退出整个程序(2个嵌套循环都退出),2是回到上一级别菜单(只需要退出内循环的当前迭代)
8 回到上一级别菜单(只退出内循环while) 判断用户输入的是否是"b",是的话,continnue 退出内循环的当前迭代,开始内循环下次迭代
9 退出整个程序(2个嵌套循环都退出) 判断用户输入的是否是"q",是的话,先将flag变成True,然后break退出while内循环
10 再做一个判断,判断flag是否是True,如果是的话,break退出for外循环,至此,退出整个程序(2个嵌套循环都退出)
流程图:
代码:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#!/user/binenv python3 # -*- coding:utf-8 -*- ''' Created on: 2015年1月16日 @author: 吕毅 Email: 371725153@qq.com Version: 1.0 ''' china_map = { "华南" :{ "广东" :[ "广州市" , "佛山市" , "深圳市" , "东莞市" ], "广西" :[ "南宁市" , "柳州市" , "桂林市" , "北海市" ], "海南" :[ "海口市" , "三亚市" , "三沙市" , "儋州市" ] }, "华东" :{ "上海" :[ "黄浦区" , "卢湾区" , "徐汇区" , "长宁区" , "普陀区" ], "安徽" :[ "合肥市" , "芜湖市" , "淮南市" , "马鞍山市" ], "江苏" :[ "南京市" , "无锡市" , "徐州市" , "常州市" , "苏州市" ] }, "华北" :{ "北京" :[ "东城区" , "西城区" , "朝阳区" , "丰台区" , "石景山区" , "海淀区" ], "山西" :[ "太原市" , "大同市" , "阳泉市" , "长治市" ], "河北" :[ "石家庄市" , "唐山市" , "秦皇岛市" , "邢台市" ] }, "华中" :{ "湖北" :[ "武汉市" , "黄石市" , "十堰市" , "十堰市" ], "河南" :[ "郑州市" , "开封市" , "洛阳市" , "平顶山市" ], "湖南" :[ "长沙市" , "株洲市" , "衡阳市" , "邵阳市" ] }, "西南" :{ "重庆" :[ "万州区" , "涪陵区" , "渝中区" , "大渡口区" ], "四川" :[ "成都市" , "自贡市" , "攀枝花市" , "德阳市" ], "贵州" :[ "贵阳市" , "六盘水市" , "遵义市" , "安顺市" ], }, "特别行政区" :{ "香港" :[ "屯门" , "弯仔" , "北角" , "西贡" ], "澳门" :[ "花地玛堂区" , "圣安多尼堂区" , "大堂区" , "望德堂区" ], }, } print ( "-------------------------------------------------" ) print ( "+ +" ) print ( "+ +" ) print ( "+ 欢迎来到大中华地区查询系统地 +" ) print ( "+ +" ) print ( "+ +" ) print ( "-------------------------------------------------" ) print ( "大中华地区一级划分:" ) for i in china_map: #遍历字典的key,列出大中华地区的名字 print (i) print ( "-------------------------------------------------" ) jump_flag = False #用于跳出外循环 for i in range ( 3 ): #外循环,指定循环3次,3次外循环完了,就退出程序 greater_china_name = input ( "请输入你要查看的大中华地区名字:" ) if greater_china_name in china_map: #检查输入的地区是否在地图中,如果地区名字3次输入错误,程序退出 gc_name = china_map[greater_china_name] province_name = gc_name.keys() #使用输入的信息作为key,取出省信息,存在字典中 while True : #内循环,死循环,不指定循环次数,通过break或者flag跳出 print ( "------------------包含的省名字二级:-----------------" ) #分隔线 for i in province_name: #遍历列表,取出省名字,打印出来 print (i) print ( "-------------------------------------------------" ) #分隔线 sheng_name_input = input ( "请输入你要查看的省名字:" ) if sheng_name_input in province_name: #判断输入的省名字是否在地区列表中 shi_name = china_map[greater_china_name][sheng_name_input] #取出省中有哪些市,存在列表中 print ( "--------------包含的城市名三级:-------------------" ) #分隔线 for i in shi_name: #遍历列表,取出地区市名字,打印出来 print (i) print ( "------------------------------------------------" ) #分隔线 if sheng_name_input not in province_name: #如果输入的省名字不在在地区列表中 print ( "输入的省名字不对,请重新输入" ) continue #跳出当次迭代,开始下一次迭代循环,直到地市名字输入正确为止(不停的要求输入) back_or_quit = input ( "请问是否退出?按b:Back是返回上一级菜单;按q:Exit是退出整个程序" ) #显示完地区市后,就要退出程序了,一个是全部退出,一个是返回上一级菜单 if back_or_quit = = "q" : jump_flag = True #用于跳出外循环 break #跳出while内循环 if back_or_quit = = "b" : continue # 跳出当次迭代,开始下一次迭代循环,重新输入省处,返回上一步 print ( "你输入的信息有误,请重新输入" ) if jump_flag: #跳出外循环的条件满足 break #跳出外循环 else : #上面的3次for循环正常执行完毕,else才会执行,如果是不正常退出(break),else不会执行 print ( "3次输入错误,程序退出" ) |