'''
多级菜单
需求:
1.现有省/市/县3级结构,要求程序启动后,允许用户可依次选择进入各子菜单
2.可在任意一级菜单返回上一级
3.可以在任意一级菜单退出程序
所需新知识点: 列表/字典
'''
menu = {
"山东": {
"济南": {
"平阴": {},
"商河": {},
"莱芜": {}
},
"济宁": {
"金乡": {},
"微山": {},
"嘉祥": {}
},
"曲阜": {
"南辛": {},
"陵城": {},
"防山": {}
}
},
"北京": {
"海淀": {
"万寿路": {},
"永定路": {},
"中关村": {}
},
"昌平": {
"回龙观": {},
"南口": {},
"沙河": {}
},
"朝阳": {
"呼家楼": {},
"三里屯": {},
"双井": {}
}
},
"上海": {
"黄浦": {
"南京东路": {},
"外滩": {},
"瑞金二路": {}
},
"徐汇": {
"湖南路": {},
"天平路": {},
"枫林路": {} },
"长宁": {
"华阳路": {},
"新华路": {},
"江苏路": {}
}
},
} current_menu = menu
layers = []
while True:
for i in current_menu:
print(i)
choice = input(">: ").strip()
if choice in current_menu:
layers.append(current_menu)
current_menu = current_menu[choice]
elif choice.upper() == "B":
if len(layers) == 0:
print("已经到顶了")
continue
current_menu = layers.pop() ----------------------------------------------微调1------------------------------------ current_menu = menu
choices = []
while True:
for i in current_menu:
print(i)
choice = input(">: ").strip()
if choice in current_menu:
choices.append(choice)
current_menu = current_menu[choice]
elif choice.upper() == "B":
current_menu = menu
if len(choices) == 0:
print("已经到顶了")
continue
choices.pop()
for i in choices:
current_menu = current_menu[i]
'''
比上面的代码多了最后两行,请大佬留言,哪个方式更好一些.
''' ------------------------------------------微调2--------------------------------------- current_menu = menu
choices = []
while True:
for i in current_menu:
print(i)
print("q退出 b返回上一级")
if len(choices) >= 1:
choice = input("%s>: " % '>'.join(choices)).strip()
else:
choice = input(">: ").strip()
if choice in current_menu:
choices.append(choice)
current_menu = current_menu[choice]
elif choice.upper() == "B":
current_menu = menu
if len(choices) == 0:
print("已经到顶了")
continue
choices.pop()
for j in choices:
current_menu = current_menu[j]
elif choice.upper() == "B":
break

python3 练习题(多级菜单)的更多相关文章

  1. python3之利用字典和列表实现城市多级菜单

    利用字典和列表实现城市多级菜单 #coding:utf-8 #利用字典和列表实现城市多级菜单 addrIndex = {":"福建"} addrDict = {" ...

  2. s12-day01-work02 python多级菜单展示

    README # README.md # day001-work-2 @南非波波 功能实现:多级菜单展示 流程图: ![](http://i.imgur.com/VTPPhZU.jpg) 程序实现: ...

  3. Python多级菜单

    作业2:多级菜单三级菜单可依次选择进入各子菜单所需新知识点:列表.字典 1.流程图 2.登录界面,输入对应索引 #!/usr/bin/env python3 # -*- coding:utf-8 -* ...

  4. 前端开发css实战:使用css制作网页中的多级菜单

    前端开发css实战:使用css制作网页中的多级菜单 在日常工作中,大家都会遇到一些显示隐藏类菜单,比如页头导航.二维码显示隐藏.文本提示等等......而这些效果都是可以使用纯css实现的(而且非常简 ...

  5. MVC5+EF6 入门完整教程13 -- 动态生成多级菜单

    稍微有一定复杂性的系统,多级菜单都是一个必备组件. 本篇专题讲述如何生成动态多级菜单的通用做法. 我们不用任何第三方的组件,完全自己构建灵活通用的多级菜单. 需要达成的效果:容易复用,可以根据mode ...

  6. java 24 - 7 GUI之 创建多级菜单窗体

    需求: 创建多级菜单 步骤: A:创建窗体对象(并设置属性和布局) B:创建菜单栏 C:创建菜单和子菜单 D:逐步添加菜单(子菜单添加到菜单中,菜单添加到菜单栏中) E:窗体中设置菜单栏(菜单栏并不是 ...

  7. 单片机C语言下LCD多级菜单的一种实现方法

    摘要:     介绍了在C 语言环境下,在LCD 液晶显示屏上实现多级嵌套菜单的一种简便方法,提出了一个结构紧凑.实用的程序模型. 关键词: 液晶显示屏; 多级菜单; 单片机; C 语言; LCD 中 ...

  8. zTree下拉菜单多级菜单多选实现

    惯例,先上图: 这是在一个项目中,为了满足样式美观.多级菜单以及多选而将zTree插件更改过后的效果. 在实际的开发过程中,本来zTree也是可以满足需求的,但是zTree多选的话需要checkbox ...

  9. Jquery多级菜单插件Slimmenu使用说明

    Jquery多级菜单插件Slimmenu使用说明 现在扁平化设计逐渐的成为了趋势,不管是pc web,还是移动互联网的应用开发,都在研究和设计Flat ui, 这里有一篇文章说明扁平化的设计的一些想法 ...

随机推荐

  1. C# if---else---练习题整理

    if    else    语句是到今天为止学习的第一个完整的语句,把有意思的练习题整理下来开一下脑洞!!! 练习一简单的人工智能 1 static void Main(string[] args) ...

  2. iis 站点中文乱码 解决方案

    问题描述:iis乱码问题 1:在vs里开发没问题,发布后用发布文件替换iis文件没问题,但是如果用fis3发布后导致iis站点访问时出现部分中文乱码 原理:文件编码格式不统一 解决方案: 四个步骤解决 ...

  3. 数据库和ado连接语句的使用总结

    基本的sql语句 创建数据库:CREATE DATABASE database-name 删除数据库:drop database dbname 创建表:create table tabname(字段属 ...

  4. 【Java并发编程】6、volatile关键字解析&内存模型&并发编程中三概念

    volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...

  5. 设计模式之策略模式(Strategy)

    策略模式将不同算法的逻辑抽象接口封装到一个类中,通过组合和多态结合的方式来进行不同算法具体的实现. 作用 策略模式是一种定义一系列算法的方法,Strategy类层次为Context定义了一系列的可重用 ...

  6. Google Chrome 中安装 PostMan 扩展

    简介 PostMan 是调试 HTTP 请求的好工具,也是业界的佼佼者,这对于我们开发 Web Service 提供了很好的调试入口,支持请求认证机制.最关键的是,这个工具提供 Google Chro ...

  7. Python3选择支持非ASCII码标识符的缘由

    原文在: PEP 3131 -- Supporting Non-ASCII Identifiers. Python2并不支持非ASCII码标识符. PEP的全称是Python Enhancement ...

  8. 从零开始学习html(三) 认识标签(第二部分)

    一.使用ul,添加新闻信息列表 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Ty ...

  9. Chrome调试本地文件无法使用window.opener对象进行窗口间值传递

    今天在百度BAE上建了个应用,svn上传后发现页面间互调有些问题,几经查询发现: (1)IE下正常的window.opener.object1.object2页面间对象访问方法在Chrome下不能使用 ...

  10. 【转】pam_mysql - MySQL error (Can't connect to local MySQL server through socket

    转自:http://350201.blog.51cto.com/340201/1034672 参照 http://wjw7702.blog.51cto.com/5210820/936244博 主做的p ...