1 menu_list = {
  2     '北京':{
  3         '昌平':{
  4             '回龙观':{
  5                 '和谐家园':{},
  6                 '矩阵小区':{},
  7                 '北店家园':{}
  8             },
  9             '沙河':{
 10                 '北街家园1区':{},
 11                 '北街家园2区':{},
 12                 '北师大附小':{}
 13             }
 14         },
 15         '海淀':{
 16             '西二旗':{
 17                 '云端时代':{},
 18                 '百度':{},
 19                 '软件园':{}
 20             },
 21             '西三旗':{
 22                 '上地五街':{},
 23                 '上地三街':{},
 24                 '方正集团':{}
 25             }
 26         }
 27     },
 28     '邯郸':{
 29         '丛台区':{
 30             '黄粱梦':{
 31                 '东官庄':{},
 32                 '王李庄':{}
 33             },
 34             '沙河':{
 35                 '北街家园1区1':{},
 36                 '北街家园2区2':{},
 37                 '北师大附小3':{}
 38             }
 39         },
 40         '复兴区':{
 41             '永年':{
 42                 '云端时代1':{},
 43                 '百度2':{},
 44                 '软件园3':{}
 45             },
 46             '肥乡':{
 47                 '上地五街1':{},
 48                 '上地三街2':{},
 49                 '方正集团3':{}
 50             }
 51         }
 52     },
 53  }
 54 map_list = []
 55 cur_layer_pos = 0
 56 cur_layer_keys = []
 57 cur_layer_keys_values = []
 58 is_exit = False
 59 is_not_next = True
 60 while not is_exit:
 61     if is_not_next:
 62         if cur_layer_pos == 0:
 63             cur_layer_keys = menu_list.keys()
 64         else:
 65             cur_layer_keys = map_list[cur_layer_pos - 1][1].keys()
 66
 67     if len(cur_layer_keys) > 0:
 68         is_not_next = True
 69         print('可以进入的下一级菜单显示:', list(cur_layer_keys))
 70     else:
 71         print("已经到菜单底部啦,只能输入p返回上一级菜单")
 72     cur_menu_name = input('请输入菜单名:')
 73     if cur_menu_name.lower() == 'p':
 74         if cur_layer_pos > 0:
 75             map_list.pop()
 76             cur_layer_pos -= 1
 77             is_not_next = True
 78         else:
 79             print('已经到顶级菜单啦.')
 80     elif cur_menu_name.lower() == 'q':
 81         is_exit = True
 82     elif cur_menu_name in cur_layer_keys:
 83         map_list.append([cur_menu_name, menu_list[cur_menu_name] if cur_layer_pos == 0 else map_list[cur_layer_pos - 1][1][cur_menu_name]])
 84         cur_layer_pos += 1
 85     else:
 86         if len(cur_layer_keys) > 0:
 87             print("请输入正确的菜单名称...")
 88         else:
 89             is_not_next = False
 90             print("已经到菜单底部啦,只能输入p返回上一级菜单")
 91     print('当前所在的位置:', [_map[0] for _map in map_list])
 92 

View Code

多级菜单的要求如下:

1. 可以依次进入子菜单

2. 任意级菜单均可返回上一级

3. 任意级菜单均可退出程序

主要是锻炼列表和字典数据类型

三级菜单实现可以如下:

http://www.cnblogs.com/bg0131/p/6416816.html

转载于:https://www.cnblogs.com/yongqiangyue/p/8717078.html

【Pthon入门学习】多级菜单小例子相关推荐

  1. 微信小程序开发入门学习(1):石头剪刀布小游戏

    从今天起开始捣鼓小程序了2018-12-17   10:02:15 跟着教程做了第一个入门实例有兴趣的朋友可以看看: 猜拳游戏布局 程序达到的效果 猜拳游戏的布局是纵向显示了三个组件:文本组件(tex ...

  2. Q-learning学习的一个小例子

    强化学习的难点,在于其引入了时间这个维度,不管是有监督还是无监督学习,都是能获得即使反馈,但到了强化学习中,反馈来的没那么及时.在周志华的<机器学习>中,举过一个种西瓜的例子.种瓜有很多步 ...

  3. 小程序入门学习21--前端小程序开发及数据渲染

    完结撒花 再发一遍学习视频地址 1 项目运行图 2 项目github地址 3 一个class内放多个样式,不断累加 <view class='news-title title-words'> ...

  4. 小程序入门学习16--上传小程序至github

    1 配置hosts,使电脑可以访问github 修改hosts(进入hosts方法) 2 注册 进入github,点右上角sign up,填写注册信息 3 创建仓库 点击New,新建仓库 复制HTTP ...

  5. python初学小甲鱼_Python零基础入门学习 作者:小甲鱼

    temp = input('不妨想一想小甲鱼现在心里想的哪一个数字:') guess = int(temp) if guess == 8: print('你是小甲鱼心里的蛔虫吗?') print('哼 ...

  6. 黑马程序员—GUI(菜单)小例子

    ------- <a href="http://www.itheima.com" target="blank">android培训</a> ...

  7. SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目

    JavaDog Chat v1.0.0 基于SpringBoot+uniapp简单通讯聊天软件

  8. CAD入门学习教程:什么是截取大样?有什么用?

    有些刚开始进行CAD入门学习的小伙伴在使用正版CAD软件绘制建筑图纸的过程中,由于对建筑CAD命令了解的不是很清楚,不知道什么是截取大样.那么今天的CAD入门学习教程小编就来给大家介绍一下国产CAD软 ...

  9. 从一个小例子看贝叶斯公式的应用(学习简单、基础、入门的例子)

    #从一个小例子看贝叶斯公式的应用 ###应用Bayesian公式考察如下的实例并回答问题. 张某为了解自己患上了X疾病的可能性,去医院作常规血液检查.其结果居然为阳性,他赶忙到网上查询.根据网上的资料 ...

最新文章

  1. jQuery效果:隐藏、显示、切换、滑动、淡入淡出、动画
  2. js实现图片轮播(终结版)
  3. MongoDB 查询时间差问题修复
  4. Gym - 101972H Beautiful Substrings(思维+模拟)
  5. linux的文件io操作(转)
  6. java注释修改_java – 使用注释修改方法
  7. 李彦宏:“最后一公里”的自动驾驶会提前实现
  8. mobaxterm下载与使用mobaxterm远程登录Linux
  9. mysql 建表sysdate_mysql数据库基本操作练习
  10. Windows下的Tomcat7安装与环境配置
  11. 魔兽世界 助手 无法连接服务器,魔兽世界助手8.1无法登陆
  12. python命名空间与作用域
  13. 【MQ-3 酒精检测器与 Arduino检测酒精】
  14. EI会议论文,第二届云计算、大数据与数字经济国际学术会议最终截稿倒计时10天
  15. 牛客2019跨年AK场
  16. Activiti7学习笔记、非常详细 | 进阶篇
  17. 几种常用的数据校验方式
  18. 新手:MySQL 左连接 右连接 内连接 全外连接查询数据
  19. element表单校验输入框手动清空时出现XXX is required提示
  20. Golang编程基础第一篇——Golang快入门

热门文章

  1. c语言键盘回调函数键盘的码,深入浅出剖析C语言函数指针与回调函数(三)
  2. java获取文件夹下所有文件的名称
  3. asp.net 关于列表问题。点击文章标题,显示文章内容。
  4. 数单词 (AC自动机模板题)
  5. Java中的Set操作
  6. ARP欺骗原理与模拟
  7. 改变MATLAB仿真出来的图的线条颜色表
  8. 三种工厂模式的分析以及C++实现
  9. 计算机网络中各层的协议图表(TCP/IP)
  10. Java之socket编程