字典表示三级菜单

  经过一周断断续续的编写,终于完成用字典表示三级菜单的工作,深入了解了while,for ,if else的用法,以及break,continue的作用。感谢老男孩免费教程。

1.作业内容:

用字典表示三级菜单,并根据输入的内容逐步显示下级菜单,最终显示输入的完整路径。

字典表示:

dic = {

    "省":{

       "市":{

          “县”{

            }

          }

       }

    }

2.字典,列表

dic.keys()

dic.[”省”].keys()

dic.[‘省’]['市']

 

  1 #!/user/binenv python3
  2 # -*- coding:utf-8 -*-
  3 
  4 '''
  5 Created on: 2015年1月16日
  6 
  7 @author: 吕毅
  8 
  9 Email: 371725153@qq.com
 10 
 11 Version: 1.0
 12 
 13 '''
 14 
 15 china_map = {
 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 print("-------------------------------------------------")
 63 print("+            +")
 64 print("+            +")
 65 print("+   欢迎来到大中华地区查询系统地   +")
 66 print("+            +")
 67 print("+            +")
 68 print("-------------------------------------------------")
 69 print("大中华地区一级划分:")
 70 for i in china_map:  # 遍历字典的key,列出大中华地区的名字
 71 
 72     print(i)
 73 print("-------------------------------------------------")
 74 
 75 a = 0
 76 b = 0
 77 c = 0
 78 
 79 jump_flag = False  # 用于跳出外循环
 80 jump_c = False
 81 #for i in range(3):  # 外循环,指定循环3次,3次外循环完了,就退出程序
 82 while a < 3:
 83         greater_china_name = input("请输入你要查看的大中华地区名字:")
 84         if greater_china_name in china_map:  # 检查输入的地区是否在地图中,如果地区名字3次输入错误,程序退出
 85             gc_name = china_map[greater_china_name]
 86             province_name = gc_name.keys()  # 使用输入的信息作为key,取出省信息,存在字典中
 87 
 88          # 内循环,死循环,不指定循环次数,通过break或者flag跳出
 89             #print("------------------包含的省名字二级:-----------------")  # 分隔线
 90             #for i in province_name:  # 遍历列表,取出省名字,打印出来
 91             #    print(i)
 92             #print("-------------------------------------------------")  # 分隔线
 93 
 94 
 95             while b < 3:
 96 
 97                 print("------------------包含的省名字二级:-----------------")  # 分隔线
 98                 for i in province_name:  # 遍历列表,取出省名字,打印出来
 99                     print(i)
100                 print("-------------------------------------------------")  # 分隔线
101 
102                 sheng_name_input = input("请输入你要查看的省名字:")
103 
104                 if sheng_name_input in province_name:  # 判断输入的省名字是否在地区列表中
105                     shi_name = china_map[greater_china_name][sheng_name_input]  # 取出省中有哪些市,存在列表中
106 
107                     while c < 3:
108 
109                         print("--------------包含的城市名三级:-------------------")  # 分隔线
110                         for i in shi_name:  # 遍历列表,取出地区市名字,打印出来
111                             print(i)
112                         print("------------------------------------------------")  # 分隔线
113                         shi_input_name = input('请输入城市名称:')
114                         if shi_input_name in china_map[greater_china_name][sheng_name_input]:
115                             print ('完整的城市路径:',shi_input_name,sheng_name_input,greater_china_name)
116                             c_b_q = input('继续输入请按C-继续;返回上级请按b-返回;退出程序请按q-退出:')
117                             if c_b_q == 'c':
118                                 c = 0
119                                 continue
120                             elif c_b_q == 'b':
121                                 b = 0
122                                 break
123                             else:
124                                 a = 0
125                                 #b = 0
126                                 #c = 0
127                                 os._exit()
128                                 break
129 
130 
131                         else:
132                             print('输入的城市名称不正确,请重新输入:')
133                             c += 1
134                             break
135 
136                     else:
137                         #jump_c = True
138                         print('您输入已经超过三次,程序退出!')
139 
140                         break
141 
142 
143                 if sheng_name_input not in province_name:  # 如果输入的省名字不在在地区列表中
144                     print("输入的省名字不对,请重新输入")
145                     b += 1
146             else:
147                 print('您已经输入超过三次省级名称,程序退出。')
148                 break
149                     #continue  # 跳出当次迭代,开始下一次迭代循环,直到地市名字输入正确为止(不停的要求输入)
150 
151         if jump_flag:  # 跳出外循环的条件满足
152                 break  # 跳出外循环
153 else:  # 上面的3次for循环正常执行完毕,else才会执行,如果是不正常退出(break),else不会执行
154     print("3次输入错误,程序退出")
View Code

 

posted @ 2016-08-09 14:59  EricShang  阅读(361)  评论(0编辑  收藏  举报