【Pthon入门学习】多级菜单小例子

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入门学习】多级菜单小例子的更多相关文章
- springmvc入门的第一个小例子
今天我们探讨一下springmvc,由于是初学,所以简单的了解一下 springmvc的流程,后续会持续更新... 由一个小例子来简单的了解一下 springmvc springmvc是spring框 ...
- 微信小程序开发入门学习(1):石头剪刀布小游戏
从今天起开始捣鼓小程序了2018-12-17 10:02:15 跟着教程做了第一个入门实例有兴趣的朋友可以看看: 猜拳游戏布局 程序达到的效果 猜拳游戏的布局是纵向显示了三个组件:文本组件(tex ...
- js入门学习~ 运动应用小例
要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰) 主要是练习多个物体的运动框架~~ --------------------- ...
- python爬虫入门-开发环境与小例子
python爬虫入门 开发环境 ubuntu 16.04 sublime pycharm requests库 requests库安装: sudo pip install requests 第一个例子 ...
- 蒙特卡洛模拟入门的几个小例子(R语言实现)
嗯,第一个例子是怎么用蒙特卡洛模拟求pi的值:第二个是用蒙特卡洛模拟求解定积分:第三个是用蒙特卡洛模拟证券市场求解其收益:第四个是用蒙特卡洛模拟验证OLS的参数的无偏性:然后还要R是如何求导,计算导数 ...
- Python零基础入门学习 作者:小甲鱼
temp = input('不妨想一想小甲鱼现在心里想的哪一个数字:') guess = int(temp) if guess == 8: print('你是小甲鱼心里的蛔虫吗?') print('哼 ...
- python3 实现一个多级菜单小功能
记录下一下 #!/usr/bin/env python3 ''' 需求:三级菜单 三级菜单,依次进入子菜单 ''' City = { '北京':{ '大兴区':[ '亦庄','黄村','中信新城',' ...
- 【Pthon入门学习】99乘法表
学习知识点: 1. string.join(seq): 以string字符串作为分隔符,将seq的所有元素拼接成一个新的字符串 s = ['%d * %d = %d' % (y, 4, 4*y) fo ...
- java入门---简介&简单输出小例子&开发前准备
Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出.J ...
随机推荐
- Oracle 存储结构三
Oracle数据库服务器自动管理空间的方法 段空间的分配 空间以区间的形式分配给段,区间是一组连续的Oracle块.每个数据文件都有一个位图,来描述文件中块的状态,块可能是空闲的,也可能是区间中已分配 ...
- 怎么在一台电脑上安装win7与centos7双系统
对于用习惯windows系统的小伙伴们来说,好像Linux系统的命令操作感觉会比较神秘,进而有部分小伙伴就想说也学一学LInux操作系统.但是苦于资源的问题--就一台计算机,一块硬盘,担心说如果安装了 ...
- #leetcode刷题之路25- k个一组翻转链表
给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表.k 是一个正整数,它的值小于或等于链表的长度.如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序. 示例 :给定这个链表:1- ...
- 百度地图热力图--批量地址转换应用(基于百度api)
需求:把外卖订餐地址做个用户分布热力图 思路分析:第一步去百度地图api开放平台找例子 http://lbsyun.baidu.com/jsdemo.htm#c1_15 首先从百度API的demo例子 ...
- JVM,JMM,虚拟机栈,本地方法栈
JVM 虚拟机栈 本地方法栈:本地方法(使用native关键词修饰的方法,是由JVM底层用C,C++实现的),运行这部份代码使用的栈就是本地方法栈
- Leecode刷题之旅-C语言/python-389 找不同
/* * @lc app=leetcode.cn id=389 lang=c * * [389] 找不同 * * https://leetcode-cn.com/problems/find-the-d ...
- docker 容器 设置网络代理
以/bin/bash 形式进入容器: [设置http 及https代理],如下: export http_proxy=http://172.16.0.20:3128 export https_prox ...
- 欧几里得算法/欧几里得扩展算法-python
说在开头. 出于对欧几里得的尊重,先简单介(cou)绍(ge)一(zi)下(shu).. 欧几里得,古希腊人,数学家.他活跃于托勒密一世时期的亚历山大里亚,被称为“几何之父”. 他最著名的著作< ...
- 自己第一次使用ANTLR遇到的问题
觉得既然是第一次尝试ANTLR嘛,那就来个简单点的,parse Windows 的 hosts 文件吧,结果...... 先上一段 grammar: grammar hosts; hostfile: ...
- 20155332 2016-2017-2《Java程序设计》课程总结
20155332 2016-2017-2<Java程序设计>课程总结 1.每周作业链接汇总 2.博客之最 3.实验链接汇总 博客链接汇总 预备作业1:那些年陪伴我的老师+我期待的师生关系 ...