1. 三级菜单需求:
  2. 1.可依次选择进入各子菜单
  3. 2.可从任意一层往回退到上一层
  4. 3.可从任意一层退出程序
  5. 所需新知识点:列表、字典

先通过字典建立数据结构

  1. #创建字典
  2. city_dic = {
  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. "7中":{
  64. "足球":{},
  65. "篮球":{},
  66. "排球":{},
  67. },
  68. "9中":{
  69. "足球":{},
  70. "篮球":{},
  71. "排球":{},
  72. },
  73.  
  74. },
  75. },
  76. "上海":{
  77. "黄埔区":{
  78. "3中":{
  79. "足球":{},
  80. "篮球":{},
  81. "排球":{},
  82. },
  83. "4中": {
  84. "足球":{},
  85. "篮球":{},
  86. "排球":{},
  87. },
  88. "5中": {
  89. "足球":{},
  90. "篮球":{},
  91. "排球":{},
  92. },
  93. },
  94. "徐汇区":{
  95. "6中": {
  96. "足球":{},
  97. "篮球":{},
  98. "排球":{},
  99. },
  100. "7中": {
  101. "足球":{},
  102. "篮球":{},
  103. "排球":{},
  104. },
  105. "8中": {
  106. "足球":{},
  107. "篮球":{},
  108. "排球":{},
  109. },
  110. },
  111. "长宁区":{
  112. "9中": {
  113. "足球":{},
  114. "篮球":{},
  115. "排球":{},
  116. },
  117. "10中": {
  118. "足球":{},
  119. "篮球":{},
  120. "排球":{},
  121. },
  122. "11中": {
  123. "足球":{},
  124. "篮球":{},
  125. "排球":{},
  126. },
  127. },
  128. },
  129. "黑龙江":{
  130. "哈尔滨":{
  131. "1中": {
  132. "足球":{},
  133. "篮球":{},
  134. "排球":{},
  135. },
  136. "2中":{
  137. "足球":{},
  138. "篮球":{},
  139. "排球":{},
  140. },
  141. "3中": {
  142. "足球":{},
  143. "篮球":{},
  144. "排球":{},
  145. },
  146. },
  147. "大庆":{
  148. "4中":{
  149. "足球":{},
  150. "篮球":{},
  151. "排球":{},
  152. },
  153. "5中": {
  154. "足球":{},
  155. "篮球":{},
  156. "排球":{},
  157. },
  158. "6中": {
  159. "足球":{},
  160. "篮球":{},
  161. "排球":{},
  162. },
  163. },
  164. "牡丹江":{
  165. "7中":{
  166. "足球":{},
  167. "篮球":{},
  168. "排球":{},
  169. },
  170. "8中": {
  171. "足球":{},
  172. "篮球":{},
  173. "排球":{},
  174. },
  175. "9中": {
  176. "足球":{},
  177. "篮球":{},
  178. "排球":{},
  179. },
  180. },
  181. "佳木斯":{
  182. "10中": {
  183. "足球":{},
  184. "篮球":{},
  185. "排球":{},
  186. },
  187. "11中": {
  188. "足球":{},
  189. "篮球":{},
  190. "排球":{},
  191. },
  192. "12中": {
  193. "足球":{},
  194. "篮球":{},
  195. "排球":{},
  196. },
  197. },
  198. },
  199. }
  1.  
  2. 优化版实现代码:15
  1. current_layer = city_dic #当前层
  2. last_layers = [city_dic] #把当前层赋值给列表,方便退出时使用
  3. while True:
  4. #循环打印字典列表key
  5. for key in current_layer:
  6. print(key)
  7. choice = input(">>>:").strip() #等待用户输入
  8. if choice == "": continue #判断是否为空,为空则continue,
  9. if choice in current_layer: #进入下一层
  10. last_layers.append(current_layer) #把当前层添加到列表
  11. current_layer = current_layer[choice] #当前层变为选择choice的下一层
  12. if choice == "b":
  13. if last_layers:
  14. current_layer = last_layers[-1] #从列表中取到最后一个值,即循环的上一层,赋值给current_layer
  15. last_layers.pop() #取完列表中最后一个值后,要把它从列表中删除,pop()默认删除列表中最后一个,也可以写成pop(-1)
  16. if choice == "q": break # 如果输入q,结束程序。

python-三级菜单的优化实现的更多相关文章

  1. Python 三级菜单与优化(一层循环嵌套)

    优化的思路是使用单层循环嵌套完成三级菜单,这个优化思路我非常喜欢,我喜欢在编程的时候用最少的东西写出同样的效果,通常这样会绕来绕去,但非常有趣!!! 需求: 1.运行程序输出第一级菜单: 2.选择一级 ...

  2. python(5)- 简单练习:python三级菜单优化

    python三级菜单优化,菜鸟版链接:http://www.cnblogs.com/xuyaping/p/6648170.html menu = { '北京':{ '海淀':{ '五道口':{ 'so ...

  3. python三级菜单实例(傻瓜版和进阶版)

    程序: python三级菜单 要求: : 1.打印省.市.县三级菜单 2.可返回上一级 3.可随时退出程序 方案一:傻瓜版(其实傻瓜版考察的主要是思路!思路清楚了,那才不是傻瓜!O(∩_∩)O哈哈~) ...

  4. python三级菜单的实现

    一.作业要求 1.使用字典实现三级菜单功能 2.直接输入前面数字进入下一级菜单 3.按B返回上一级,按Q退出 二.需要知识点 1.if循环 2.for循环,enumerate的用法 3.while循环 ...

  5. python 三级菜单 while循环三次,湖北省市-县-街道的选择,3个while的循环 -day2

    python编写一个三级while的循环菜单 1.定义字典,字典里面嵌套字典,内嵌字典的值为列表. 思路: 湖北省的市:字典中的定义3个字典,用于存储{序列-键:市名} shiqu_dir = {} ...

  6. Python 三级菜单 增强版

    需要实现的功能是:三级菜单1.从文本内读出选项2.查询每一级的选项,并能对选项进行增/删/改功能3.每一级可以退出程序或者返回上一层 2018-5-14 更新内容 思路 实现过程中的BUG及解决方案: ...

  7. python三级菜单

    #-*- coding:utf-8 -*-#Author:gxli #一级菜单项def menu(): #遍历字典dic一级菜单 print('-----------一级菜单------------- ...

  8. Python——三级菜单

    #三级菜单函数 menu = { '北京':{ 海淀:{ '五道口':{} '中关村':{} '上帝':{} } '昌平':{} '朝阳':{} '东城':{} }, '上海':{} '山东':{} ...

  9. 4th,Python三级菜单

    1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 data = { '北京': ...

  10. [terry笔记]python三级菜单

    把三级菜单输出,选择后逐层显示,”b“返回上一级菜单. menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村': ...

随机推荐

  1. WebSettings 最全属性说明

    setAllowContentAccess (boolean allow) 是否允许在WebView中访问内容URL(Content Url),默认允许.内容Url访问允许WebView从安装在系统中 ...

  2. Gson 转换hibernate级联对象出现StackOverFlow(堆栈溢出)问题

    < many-to-one>和< one-to-many>属性的对象级联关系在转换时会造成死循环,报stackOverFlowException. 比如下面这段: @OneTo ...

  3. BIEE入门(一)架构

    BIEE作为Oracle的新的商业智能平台企业版,起源于Oracle所收购的Siebel公司,BIEE原来叫做Siebel Analytic,但是Siebel也不是它的发明者,它是Siebel在200 ...

  4. 微信小程序国际化

    微信小程序国际化 现状 小程序国际化官方没有支持,也没有现成的插件. 网上有人做了国际化的尝试.但是只能替换静态文本,就是简单的键值匹配. vue-i18n 由于是基于html 和 vue, 不同于w ...

  5. DeepQA websocket 并发测试

    var client = new Array(); var W3CWebSocket = new Array(); var concurrent = 2; for (var i = 0; i < ...

  6. 在文本框输入数据后,因为有历史记录,鼠标点或者敲回车这个历史记录时,请问会触发什么JS事件

    非ie触发 oninput事件,ie触发>onpropertychange事件 jquery写法 $("#input").bind("input propertyc ...

  7. SignalR集成Autofac

    SignalR SignalR集成需要 Autofac.SignalR NuGet 包. SignalR 集成提供SignalR 集线器的依赖集成.由于 SignalR 是内部构件,所以不支持Sign ...

  8. TemplateSyntaxError at /article/list-article-titles/admin/

    如图红圈所示,发现一个注释掉的{% if userinfo %}标签竟然可以影响后面的标签快,不能注释,需要完全删除才不会报错. 继续这类django在html模板中直接注释掉发生错误以及解决方案: ...

  9. SpringMVC学习记录七——sjon数据交互和拦截器

    21       json数据交互 21.1      为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservi ...

  10. java中String、StringBuffer和StringBuilder的区别(简单介绍)

    简单介绍 java中用于处理字符串常用的有三个类: 1.java.lang.String 2.java.lang.StringBuffer 3.java.lang.StrungBuilder 三者共同 ...