'''
多级菜单
需求:
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#.net使用DotNetCharting控件生成报表统计图

    在做项目时要对数据进行统计分析,所以必须生成一些报表统计图(如柱形图.饼图.曲线图等),网上强烈推荐了使用DotNetCharting控件来实现,于是自己对DotNetCharting控件进行了简单的 ...

  2. iOS SDK开发汇总

    以前也做过静态库的开发,不过都是一些简单的调用,最近在做项目的时候,发现其中还有很多问题,所以建个小项目简单记录遇到的问题以及正确的解决办法. 在项目中遇到的问题如下:xib文件获取不到, story ...

  3. java错误分析之junit测试错误(实验一)

    本文转自:https://www.cnblogs.com/anny0404/p/5275595.html 在原作者的基础上进行部分添加,也很感谢原作者这篇博文,帮我分析与解决问题! 原文: 下载了最新 ...

  4. vue VNode如何使用,是什么东西?

    前言:element ui 中有些 demo 使用了 vue 的 VNode,但是 demo 毕竟不全,所以想要了解 VNode 到底是什么,如何写出符合自己业务的代码. vue 官网介绍:渲染函数 ...

  5. scala简单入门_wordCount

    scala的语法写起来是非常的舒服的,相比java来说,简便许多.而Java在scala面前就显的略微有些笨重了. 接下来我们看一下scala版的wordcount import scala.io.S ...

  6. NIO学习笔记二

    Java NIO的通道channel 既可以从通道中读取数据,又可以写数据到通道.通道可以异步地读写.通道中的数据总是要先读到一个Buffer(缓冲区),或者总是要从一个Buffer(缓冲区)中写入. ...

  7. 【读书笔记】iOS-iCloud介绍

    iCloud是一种面向消费者市场的云存储服务,苹果公司已经做了大量的工作让用户能够平滑过渡到iCloud,不过对开发者而言这意味着新的负担. 怎样使用iCloud? 你可以使用2种方式在你的应用中使用 ...

  8. REM在edge浏览器中不重新计算解决

    经过多分析和排查,此问题解决的方案 第一种: 在CSS样式中添加 body { font-size:100% } 如果不起作用,可以尝试将引用的REMjs放在head内引用

  9. mysql 中表和数据库名称不要使用 '-' 命名

    mysql 中表和数据库名称不要使用 '-' 命名 若使用这个符号,比如 my-name 做为数据库表名称 那么在 sql 中必须如下: select * from `my-name`

  10. 搜狐eHR团队-曾经一起奋斗过的~

    昨天所有搜狐eHR团队同事再相聚(在职+离职),大家聊的都很开心,共同回顾了eHR项目从无到有的过程. 非常感谢在搜狐的工作经历,自己成长很多,目前大家分布在各个公司为eHR做着贡献,大家都注意身体~ ...