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. iOS 根据url生成二维码贴到底图上

    根据url 生成指定尺寸的二维码图片 UIImage * createBinaryCodeImg(const char * url ,CGFloat size) { //create binary c ...

  2. 公司内网静态IP,外网无线动态IP 同时上网,不必再切换网卡啦 route 命令给你搞定。

    一: 公司内网:192.168.55.101   255.255.255.0    192.168.55.1  网关 外网:192.168.20.101  255.255.255.0   192.16 ...

  3. js的组合函数

    1.组合函数即由若干个函数组合成一个新的函数,同时完成数据的传递 1>最简单版本 这种方法实现的组合函数,需要我们指定函数的执行顺序 /**第一种方法 */ function add(a, b) ...

  4. Node调试

    之前调试node代码简单粗暴,直接在代码打印日志,控制台观察日志,效率低下~ 原来后端node代码也可以通过Chrome断点调试,以下是调试方法. (1)找到node启动的进程 ps aux|grep ...

  5. 使用PHP生成二维码支持自定义logo

    require_once 'phpqrcode/phpqrcode.php'; //引入类库 $text = "https://www.baidu.com/";//要生成二维码的文 ...

  6. 树莓派ubuntu系统下修改config.txt文件 树莓派config.txt文件修改记录

    原文:https://www.raspberrypi.org/documentation/configuration/config-txt.md译文:http://my.oschina.net/fun ...

  7. STM32利用CUBEMX建立自定义HID工程,并且完成64字节的IN,OUT传输功能。

    STM32 Customed HID开发流程 本文介绍的是STM32的cubeMX自定义HID的开发流程 cubeMX配置customed HID模式.更多详细配置壳查看代码CubeMX的配置文件. ...

  8. python基础知识你学会了多少

    前言 学习是一个循序渐进的过程,不在于你学了多少,而在于你学会了多少.(装个b好吧,hhhh) 知识总结 之前一直想在网上找一个总结好的笔记,但是一直都没有找到,因此下定决心要总结一下,里面的都是在学 ...

  9. Mysql Explain的简单使用

    Mysql Explain 主要重要的字段有上面红色方框圈出来的那几个. type: 连接类型,一个好的SQL语句至少要达到range级别,杜绝出现all级别. key: 使用到的索引名,如果没有选择 ...

  10. Linux入门进阶第四天(下)——程序管理(补充内容)

    1.PID 触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限设置. 同一个程序 ...