流程图:

code:

  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3. # Auther:ccorz Mail:ccniubi@163.com Blog:http://www.cnblogs.com/ccorz/
  4.  
  5. #定义3层字典与其中列表
  6. china_map={
  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. area_list=[]
  56. #遍历字典,将字典的key添加入空的区域列表
  57. for i in china_map:
  58. area_list.append(i)
  59. #设置退出循环的flag
  60. break_flag=0
  61. #当flag为初始值进入循环
  62. while break_flag==0:
  63. #遍历并打印区域列表元素以及索引号
  64. for i in area_list:
  65. print(area_list.index(i),i)
  66. #用户交互,选择序列号或者退出
  67. area_num=input('\033[1;32;m输入您要查询的大区序列号(输入"q"退出查询):\033[0m')
  68. #判断输入是否为q
  69. if area_num.lower() == 'q':
  70. #改变循环flag的值
  71. break_flag=1
  72. #判断输入是否为数字
  73. elif area_num.isdigit():
  74. #数字大于等于元素数量
  75. if int(area_num) >= int(len(area_list)):
  76. print('输入的序列号无对应的区域地址,请重新输入...')
  77. #数字小于元素数量
  78. else:
  79. #设置区域字典
  80. area_map=china_map[area_list[int(area_num)]]
  81. #标识符为初始值的循环
  82. while break_flag==0:
  83. #省市列表为空
  84. province_list=[]
  85. #遍历区域字典,并将区域字典的key加入省市列表
  86. for i in area_map:
  87. province_list.append(i)
  88. #打印省市列表的所以好以及元素
  89. print(province_list.index(i),i)
  90. # print(province_list)
  91. #用户交互,省市索引号,并高亮显示
  92. province_num=input('\033[1;32;m输入省的序列号(输入b返回上一层,输入q退出):\033[0m')
  93. #判断交互内容为b
  94. if province_num.lower() == 'b':
  95. #退出循环,返回上一层循环
  96. break
  97. #判断交互内容为q
  98. elif province_num.lower() == 'q':
  99. print('查询退出')
  100. #改变标识符初始值
  101. break_flag=1
  102. #交互内容为数字时
  103. elif province_num.isdigit():
  104. #设置省市字典
  105. province_map=area_map[province_list[int(province_num)]]
  106. #交互内容转化为数字,判断大于等于省市列表元素数量
  107. if int(province_num) >= len(province_list):
  108. #回显,进入下一次循环
  109. print('输入的序列号无对应的省份,请重新输入...')
  110. #交互内容转化为数字,判断小于省市列表元素数量
  111. else:
  112. #标识符为初始值时,进入循环
  113. while break_flag==0:
  114. #设置城市列表为空
  115. city_list=[]
  116. #遍历省市字典,并将key添加入城市列表
  117. for i in province_map:
  118. city_list.append(i)
  119. #打印城市列表的索引号以及元素
  120. print(city_list.index(i),i)
  121. # print('citylist=========\n%s'%city_list)
  122. #交互,选择城市对应的序列号
  123. city_num=input('\033[1;32;m想看各城市的最牛逼公司么?请输入相应的序列号(输入b返回上一层,输入q退出):\033[0m')
  124. #判断交互内容为b
  125. if city_num.lower() == 'b':
  126. #退出循环,返回上一层循环
  127. break
  128. #交互内容为q
  129. elif city_num.lower() == 'q':
  130. print('退出..')
  131. #改变标识符初始值
  132. break_flag=1
  133. #交互内容为数字
  134. elif city_num.isdigit():
  135. #交互内容转化为数字,判断大于等于城市列表的元素
  136. if int(city_num) >= len(city_list):
  137. #回显,进入下一次循环
  138. print('序列号无对应的城市,请重新输入.......')
  139. else:
  140. #遍历省市字典中城市key对应的公司value(value type为列表),打印其中的值
  141. for i in province_map[city_list[int(city_num)]]:
  142. #打印列表中元素,并将相应城市添加在公司名称前面
  143. print('\033[1;32;m%s%s\033[0m'%(city_list[int(city_num)],i))
  144. #标识符为初始值,进入循环
  145. while break_flag==0:
  146. #查询完成,进入用户交互
  147. b_or_q=input('\033[1;32;m输入b返回上一层查询,输入q退出:\033[0m')
  148. #交互内容为b,退出循环,返回上一层循环
  149. if b_or_q.lower()=='b':
  150. break
  151. #交互内容为q,回显退出程序,并改变标识符的值
  152. elif b_or_q.lower()=='q':
  153. print('程序退出...')
  154. break_flag=1
  155. #交互内容为其他,回显并进入下一次循环
  156. else:
  157. print('输入错误,请重新输入:')
  158. #交互内容为其他,回显并进入下一次循环
  159. else:
  160. print('输入有误,请重新输入...')
  161. #交互内容为其他,回显并进入下一次循环
  162. else:
  163. print('输入有误,请重新输入...')
  164. else:
  165. print('输入有误,请重新输入...')

Day1作业2:多层菜单查询的更多相关文章

  1. Day1作业要求

    Day1作业 作业需求 博客 模拟登录 三级菜单 博客地址 杨振伟Day1博客地址 模拟登录 1.程序说明 实现功能如下 用户输入密码,密码验证后登录成功 用户登录成功后提示登录信息 用户输入3次错误 ...

  2. ux.form.field.SearchField 列表、树形菜单查询扩展

    //支持bind绑定store //列表搜索扩展,支持本地查询 //支持树形菜单本地一级菜单查询 Ext.define('ux.form.field.SearchField', { extend: ' ...

  3. Python作业之多级菜单

    作业之多级菜单 菜单实现要求: 1. 列出菜单选择供选择 2. 选择对应内容进入下一级菜单 3. 任何时候都可以选择退出程序或返回上一级菜单 具体代码如下: goods = {'华为':{'A系':{ ...

  4. day1作业二:多级菜单操作

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 思路: (1)首先定义好三级菜单字典: (2)提 ...

  5. day1作业二:多级菜单操作(函数实现)

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 本示例的三级菜单是一个yaml文件格式,格式如下 ...

  6. day1 作业二:多级菜单操作

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入b返回上一层,输入q退出整个程序 思路:三级菜单第一级别是省,第二级别是市,第三级别是县,用户 ...

  7. day1作业二:多级菜单

        作业二:多级菜单 1.三级菜单 2.可以次选择进入各子菜单 3.所需新知识点:列表.字典 4.打印b回到上一层 5.打印q退出循环 流程图如下: readme: (1)存储三级菜单的字典;设置 ...

  8. 老男孩Day1作业(二):三级菜单

    作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 1)编写思路 编 ...

  9. day1作业--三级菜单

    作业概述: 写一个三级菜单 实现如下功能: (1)可依次选择进入各子菜单 (2)在每一级按“b”都可以返回上一级,按“q"都可以退出 流程图: readme: 简介: three_menu. ...

随机推荐

  1. Coins in a Line III

    Description There are n coins in a line, and value of i-th coin is values[i]. Two players take turns ...

  2. 批量下载oracle jdk

    1.打开 https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html 2.同意条款 3. ...

  3. Linux 数据库相关内核参数

    cat >>/etc/sysctl.conf  <<EOOF    # add by digoal.zhou    fs.aio-max-nr = 1048576    fs. ...

  4. TPS与QPS,以及GMV

    TPS是指每秒处理事务的个数,处理的载体可以是单台服务器,也可以是一个服务器集群. 例如:下单接口,一秒内,下单完成次数为1000,则下单接口总 tps = 1000,共有10台服务器提供下单服务,单 ...

  5. 用SAM实现后缀排序

    因为本人几乎不会后缀数组,所以遇到这种SA的模板题也要拿SAM解决. 还是有一点思维难度的. 首先按照国际惯例,建反串的SAM. 然后对于这个反串,我们考虑两个前缀哪一个字典序小:因为是串是反的,所以 ...

  6. lixuxmint系统定制与配置(2)-输入法

    小书匠Linux RIME的官网在这里 1.安装 刚开始是使用ibus-rime,后来使用过程感觉不舒服,就换回fcitx-rime.使用以下命令安装fcitx-rime sudo apt insta ...

  7. Kafka 幂等生产者和事务生产者特性(讨论基于 kafka-python | confluent-kafka 客户端)

    Kafka 提供了一个消息交付可靠性保障以及精确处理一次语义的实现.通常来说消息队列都提供多种消息语义保证 最多一次 (at most once): 消息可能会丢失,但绝不会被重复发送. 至少一次 ( ...

  8. 深入浅出MYSQL数据库—思维导图[附下载链接]

    源文件下载地址:https://github.com/JluTiger/schoolRecruit2020

  9. Intellij IDEA 从入门到上瘾 图文教程

    1. IDEA VS Eclipse 核心术语比较 ​ 由下图可见:两者最大的转变就在于工作空间概念的转变,并且在IDEA当中,Project和 Module是作为两个不同的概念,对项目结构是具有重大 ...

  10. mysql忘记密码恢复

    MySQL忘记密码恢复密码的实现方法 作者:mdxy-dxy 流传较广的方法,mysql中文参考手册上的,各位vps主机租用客户和服务器托管用户忘记mysql5.1管理员密码时,可以使用这种方法破解下 ...