一、Python进阶实战之三级菜单

  1. 打印省、市、县三级菜单

  2. 可返回上一级

  3. 可随时退出程序

1.1 面条版

  1. menu = {
  2. '北京': {
  3. '海淀': {
  4. '五道口': {
  5. 'soho': {},
  6. '网易': {},
  7. 'google': {}
  8. },
  9. '中关村': {
  10. '爱奇艺': {},
  11. '汽车之家': {},
  12. 'youku': {},
  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. tag = True
  45. while tag:
  46. menu1 = menu
  47. for key in menu1: # 打印第一层
  48. print(key)
  49. choice1 = input('第一层>>: ').strip() # 选择第一层
  50. if choice1 == 'b': # 输入b,则返回上一级
  51. break
  52. if choice1 == 'q': # 输入q,则退出整体
  53. tag = False
  54. continue
  55. if choice1 not in menu1: # 输入内容不在menu1内,则继续输入
  56. continue
  57. while tag:
  58. menu_2 = menu1[choice1] # 拿到choice1对应的一层字典
  59. for key in menu_2:
  60. print(key)
  61. choice2 = input('第二层>>: ').strip()
  62. if choice2 == 'b':
  63. break
  64. if choice2 == 'q':
  65. tag = False
  66. continue
  67. if choice2 not in menu_2:
  68. continue
  69. while tag:
  70. menu_3 = menu_2[choice2]
  71. for key in menu_3:
  72. print(key)
  73. choice3 = input('第三层>>: ').strip()
  74. if choice3 == 'b':
  75. break
  76. if choice3 == 'q':
  77. tag = False
  78. continue
  79. if choice3 not in menu_3:
  80. continue
  81. while tag:
  82. menu_4 = menu_3[choice3]
  83. for key in menu_4:
  84. print(key)
  85. choice4 = input('第四层>>: ').strip()
  86. if choice4 == 'b':
  87. break
  88. if choice4 == 'q':
  89. tag = False
  90. continue
  91. if choice4 not in menu_4:
  92. continue
  93. # 第四层内没数据了,无需进入下一层
  1. 北京
  2. 上海
  3. 山东
  4. 第一层>>: 背景
  5. 北京
  6. 上海
  7. 山东
  8. 第一层>>: 北京
  9. 海淀
  10. 昌平
  11. 朝阳
  12. 东城
  13. 第二层>>: 海淀
  14. 五道口
  15. 中关村
  16. 上地
  17. 第三层>>: 中关村
  18. 爱奇艺
  19. 汽车之家
  20. youku
  21. 第四层>>: q

1.2 文艺青年版

  1. menu = {
  2. '北京': {
  3. '海淀': {
  4. '五道口': {
  5. 'soho': {},
  6. '网易': {},
  7. 'google': {}
  8. },
  9. '中关村': {
  10. '爱奇艺': {},
  11. '汽车之家': {},
  12. 'youku': {},
  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. # part1(初步实现):能够一层一层进入
  45. layers = [
  46. menu,
  47. ]
  48. while True:
  49. current_layer = layers[-1]
  50. for key in current_layer:
  51. print(key)
  52. choice = input('>>: ').strip()
  53. if choice == 'q':
  54. break
  55. if choice not in current_layer: continue
  56. layers.append(current_layer[choice])
  57. # part2(改进):加上退出机制
  58. layers = [
  59. menu,
  60. ]
  61. while True:
  62. if len(layers) == 0: break
  63. current_layer = layers[-1]
  64. for key in current_layer:
  65. print(key)
  66. choice = input('>>: ').strip()
  67. if choice == 'b':
  68. layers.pop(-1)
  69. continue
  70. if choice == 'q': break
  71. if choice not in current_layer: continue
  72. layers.append(current_layer[choice])
  1. 北京
  2. 上海
  3. 山东
  4. >>: 上海
  5. 闵行
  6. 闸北
  7. 浦东
  8. >>: 浦东
  9. >>: q
  10. 北京
  11. 上海
  12. 山东
  13. >>: q

Python进阶实战之三级菜单的更多相关文章

  1. Python学习之编写三级菜单(Day1,作业二)

    作业二:多级菜单 三级菜单 可依次进入各子菜单 在各级菜单中输入B返回上一级Q退出程序 知识点:字典的操作,while循环,for循环,if判断 思路: 1.开始,打印一级菜单让用户进行选择(可以输入 ...

  2. python第四天 三级菜单新思路

    今天是一个坎,在做三级菜单时卡住了,因为想要简洁的代码,就要用到递归函数,卡的不要不要的!不过最后在同学老师的提点帮助下,还是解决了! 2017-5-10发现之前的代码有BUG今天 修改了! 作业要求 ...

  3. python基础之省份三级菜单

    菜单 menu = { #定义一个字典 '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家 ...

  4. Python实现简单的三级菜单

    话不多说,直奔代码 # 要处理的字典 dic1 = { '北京': { '东城': { '沙河': ['沙河机场', '链家'], '天通苑': ['北方明珠', '天通尾货'] }, '朝阳': { ...

  5. python入门编程之三级菜单编程

    菜单实现功能输入一层显示下一层菜单不论在哪层输入b返回上一层不论在哪层输入q退出菜单此代码通过利用字典的知识可以实现_Author_ = 'jc'data = { '北京':{ '昌平':{ '沙河' ...

  6. Python之路-(三级菜单)

    data = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youk ...

  7. Python学习5,三级菜单实例

    _author_ = "Happyboy" data = { '北京':{ "昌平":{ "沙河":["Happyboy" ...

  8. Python学习之字典--三级菜单

    效果图: 实现代码: dic = { '人物':{ '帽子':{'前年玄铁帽'}, '武器':{'屠龙宝刀'} }, '属性':{ '力量':{35}, '敏捷':{66} }, '任务':{ '主线 ...

  9. 【Python高级工程师之路】入门+进阶+实战+爬虫+数据分析整套教程

    点击了解更多Python课程>>> 全网最新最全python高级工程师全套视频教程学完月薪平均2万 什么是Python? Python是一门面向对象的编程语言,它相对于其他语言,更加 ...

随机推荐

  1. Mysql基本注入

    实验环境:墨者学院Mysql手工注入漏洞测试靶场 后台源码没有进行任何字符过滤. 首先进入靶场环境 先用admin登陆试试 果然不行,这时看到用户登录下方有一个停机维护通知,点进去瞅瞅 看到这里链接上 ...

  2. Docker 运行应用程序

    一.docker run 镜像 执行的命令 docker run组合来运行一个容器:镜像文件不存在的话,会自动拉取(下载): 下图执行的命令的具体意思:docker 以ubuntu:15.10镜像创建 ...

  3. 电位器控制两个 LED 灯交替闪烁

    电路图: 布局:

  4. 新版Notepad++加十六进制查看的插件HexEditor

    Notepad++新版虽然去掉了在线插件商店功能,但是依然可以使用自定义插件 Notepad++下载地址 腾讯(请务必点普通下载):https://pc.qq.com/detail/0/detail_ ...

  5. Java连载56-toSting方法和equals方法

    一.关于object中的toString​方法: 1.SUN公司在Object类中设计toString方法的目的:返回java对象的字符串的表示形式. 2.在现实的开发过程中,Object里面的toS ...

  6. springaop\ cglib\ AspectJ

    元编程 vs 动态代理 vs isa代理 springaop的底层实现有两种,一种是jdk的动态代理,另一种是cglib,springaop没有用到aspectj,只是借鉴了它并添加了aspectj风 ...

  7. ABP之Logging

    服务器端 ABP使用Castle Windsor的日志设施.它可以使用不同的日志库:Log4Net.NLog.Serilog等等.Castle为所有日志程序库提供了一个公共接口,这样,我们可以独立的使 ...

  8. 关于 Sublime Text 3 中 input 无法输入的问题

    在新装的 Sublime Text 3 中,Ctrl + B 运行时会发现无法正常输入,我记录了一下我的解决方法. 相关原文可参照 https://blog.csdn.net/weixin_42116 ...

  9. MarkDown富文本编辑器怎么加载模板文件

    我们只需要一段加载代码就可以搞定MarkDown加载模板文件. $("#md-demo").bind('click', function () { $.get("/Lib ...

  10. leaflet 实现克里金插值功能(附源码下载)

    前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...