zoukankan      html  css  js  c++  java
  • 字典表示三级菜单

      经过一周断断续续的编写,终于完成用字典表示三级菜单的工作,深入了解了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
  • 相关阅读:
    HBTC 2012 Hadoop与大数据技术大会演讲PPT资料
    DLINQ *.dbml文件该属于哪一层
    建立用户、密码类型
    关于VS2005网站发布问题的继续探讨
    MS SqlServer 2000交换排序的一种方法
    Socket多线程编程委托控件的奇怪问题
    .Net 3.5(LINQ,AJAX) Web简易聊天室 源码
    数据层的逻辑
    VS2005在开发Addin(外接程序)时自动生成的bug
    钩子注入
  • 原文地址:https://www.cnblogs.com/Ericshang/p/5753249.html
Copyright © 2011-2022 走看看