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

多级菜单的要求如下:

1. 可以依次进入子菜单

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

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

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

三级菜单实现可以如下:

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

【Pthon入门学习】多级菜单小例子的更多相关文章

  1. springmvc入门的第一个小例子

    今天我们探讨一下springmvc,由于是初学,所以简单的了解一下 springmvc的流程,后续会持续更新... 由一个小例子来简单的了解一下 springmvc springmvc是spring框 ...

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

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

  3. js入门学习~ 运动应用小例

    要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰)  主要是练习多个物体的运动框架~~ --------------------- ...

  4. python爬虫入门-开发环境与小例子

    python爬虫入门 开发环境 ubuntu 16.04 sublime pycharm requests库 requests库安装: sudo pip install requests 第一个例子 ...

  5. 蒙特卡洛模拟入门的几个小例子(R语言实现)

    嗯,第一个例子是怎么用蒙特卡洛模拟求pi的值:第二个是用蒙特卡洛模拟求解定积分:第三个是用蒙特卡洛模拟证券市场求解其收益:第四个是用蒙特卡洛模拟验证OLS的参数的无偏性:然后还要R是如何求导,计算导数 ...

  6. Python零基础入门学习 作者:小甲鱼

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

  7. python3 实现一个多级菜单小功能

    记录下一下 #!/usr/bin/env python3 ''' 需求:三级菜单 三级菜单,依次进入子菜单 ''' City = { '北京':{ '大兴区':[ '亦庄','黄村','中信新城',' ...

  8. 【Pthon入门学习】99乘法表

    学习知识点: 1. string.join(seq): 以string字符串作为分隔符,将seq的所有元素拼接成一个新的字符串 s = ['%d * %d = %d' % (y, 4, 4*y) fo ...

  9. java入门---简介&简单输出小例子&开发前准备

        Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出.J ...

随机推荐

  1. java 网站源码 六套模版 兼容手机平板PC freemaker 静态引擎 在线编辑模版

    官网 http://www.fhadmin.org/ 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的ht ...

  2. Linux下ELK环境搭建

    一.准备工作 准备3台机器,这样才能完成分布式集群的实验,当然能有更多机器更好: 192.168.3.64(e1) 192.168.3.62  (e2) 192.168.3.63(e3) 角色划分: ...

  3. MySQL->导出/导入资料[20180521]

    MySQL 导出     INTO OUTFILE将资料导出至文件中     mysqldump工具导出资料和数据结构,并且可以针对数据库.数据表.索引的结构.   INTO OUTFILE测试   ...

  4. 浅谈fastDFS服务器

    FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.FastDFS特别适合以文件为载体的 ...

  5. td内的所有数字格式化保留两位小数

    $("td").each(function(i,el){ var td = parseFloat($(el).text()); if(!isNaN(td)){ $(el).text ...

  6. 编译Libuv

    Libuv https://github.com/libuv/libuv LibSourcey是基于libuv,集合了第三方用于视频流的开源库,使用C++11. 下载最新 https://dist.l ...

  7. Java动态代理代码快速上手

    动态代理的两个核心的点是:代理的行为 和 代理机构. 举个例子,上大学的时候,很多同学吃午饭的时候都是叫别人带饭,有一个人H特别热心肠,想了一个办法,他在门口挂了个公示牌,每天有谁想要找人带饭就写公告 ...

  8. 和IDEA一样好用的go语言IDE:Goland

    因为IDEA和Goland来自同一家非常有名的捷克公司:JetBrains 很好用,智能化程度高 最新版下载地址:http://www.jetbrains.com/go/?fromMenu 相关使用手 ...

  9. scala 求数组排序后每两个元素的差值

    求数组排序后每两个元素的差值 例如数组 1,5,8,10,2 求得结果为 1,3,3,2 一般什么样的场景会有这种需求呢? 比如 计算一堆数据在一定时间内的计算时延, 或者得到这段时间内数据的平均计算 ...

  10. windows系统下系统变量path误删恢复方法

    每台计算机安装程序不同,环境变量path会有不同,若误删了环境变量path,可以如下完美解决.   Win+R 输入regedit打开注册表(开始-运行里输入regedit) 找到  HKEY_LOC ...