>>>低端版

menu={'山西':
{'太原':
{'迎泽':['柳巷','五一广场','太原站'],
'小店':['山西财经大学','山西大学','武宿机场'],
'晋源':['晋祠','蒙山大佛''山西省图书馆']
},
'吕梁':
{'柳林':['联盛中学','龙花垣'],
'离石':['东关','滨河路的疯狗']
},
'大同':
{'南郊':['大同大学','方特'],
'云冈':['云冈石窟'],
}
},
'北京':
{'朝阳':
{'国贸':['渣打银行','CCTV'],
'望京':['陌陌','奔驰',''],
'三里屯':['优衣库','苹果']
},
'海淀':
{'五道口':['清华','快手'],
'中关村':['汽车之家','新东方'],
},
'昌平':
{'沙河':['老男孩','某鸟'],
'天通苑':['链家'],
'回龙观':['回龙观公园']
}
},
'陕西':
{'西安':{'未央区':['大明宫遗址公园','汉城湖旅游景区'],
'长安区':['翠华山','杨虎城陵园'],
},
'榆林':{'榆阳区':['世纪广场'],
'吴堡县':['黄河大道']
}
}
}
exit_flag=False
while exit_flag==False:
for key in menu:
print(key)
choice=input('>>请选择进入下一层或选择exit退出主菜单:').strip()
if choice=='exit':
break
elif choice in menu:
while exit_flag==False:
for key2 in menu[choice]:
print(key2)
choice2=input('>>请选择进入下一层或者选择back返回上一层,选择exit退出主菜单:').strip()
if choice2=='back':
break
elif choice2=='exit':
exit_flag=True
elif choice2 in menu[choice]:
while exit_flag==False:
for key3 in menu[choice][choice2]:
print(key3)
choice3=input('>>请选择进入下一层或选择back返回上一层,选择exit退出主菜单:').strip()
if choice3=='back':
break
elif choice3=='exit':
exit_flag=True
elif choice3 in menu[choice][choice2]:
for i in menu[choice][choice2][choice3]:
print(i)
while exit_flag==False:
choice4=input('已到达最后一层,请选择back返回上一层或选择exit退出主菜单>>:').strip()
if choice4=='back':
break
elif choice4 == 'exit':
exit_flag = True
>>>高端版
menu={'山西':
{'太原':
{'迎泽':['柳巷','五一广场','太原站'],
'小店':['山西财经大学','山西大学','武宿机场'],
'晋源':['晋祠','蒙山大佛''山西省图书馆']
},
'吕梁':
{'柳林':['联盛中学','龙花垣'],
'离石':['东关']
},
'大同':
{'南郊':['大同大学','方特'],
'云冈':['云冈石窟'],
}
},
'北京':
{'朝阳':
{'国贸':['渣打银行','CCTV'],
'望京':['陌陌','奔驰',''],
'三里屯':['优衣库','苹果']
},
'海淀':
{'五道口':['清华','快手'],
'中关村':['汽车之家','新东方'],
},
'昌平':
{'沙河':['老男孩','某鸟'],
'天通苑':['链家'],
'回龙观':['回龙观公园']
}
},
'陕西':
{'西安':{'未央区':['大明宫遗址公园','汉城湖旅游景区'],
'长安区':['翠华山','杨虎城陵园'],
},
'榆林':{'榆阳区':['世纪广场'],
'吴堡县':['黄河大道']
}
}
}
current_layer=menu #设置当前层的初始值为menu
choiced_layer=[] #建立一个已选层列表
while True:
for key in current_layer:
print(key) #打印当前层信息
choice=input('>>>输入名字进入下一层,back返回上一层,exit退出:').strip()
if choice in current_layer:
choiced_layer.append(current_layer) #把当前层加入已选层列表
current_layer=current_layer[choice] #当前层进入已选下一层
elif choice=='back':
if choiced_layer: #如果列表不为空,执行以下操作
current_layer = choiced_layer.pop() #将最后选择的层从已选层取出来,并赋给当前层
elif choice=='exit':
break
else:
print('无此项')

三级菜单(低端版VS高端版)的更多相关文章

  1. MOS管的低端驱动和高端驱动

    低端功率开关驱动电路的工作原理 低端功率开关驱动的原理非常简单,就是负载一端直接和电源正端相连,另外一端直接和开关管相连,正常情况下,没有控制信号的时候,开关管不导通,负载中没有电流流过,即负载处于断 ...

  2. Linux内存描述之高端内存--Linux内存管理(五)

    1. 内核空间和用户空间 过去,CPU的地址总线只有32位, 32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间(232=4Gbit),在物理上理论上最多拥有4G内存(除了IO地址空间, ...

  3. A.01.10—模块的输出—PWM高端输出

    PWM高端输出比低端输出用得多,如上次提到的卤素灯的控制均是采用高端输出的. PWM高端输出与PWM低端输出的差异就像固态高端输出与固态低端输出的差异类似,从线路失效后对用户的影响来看:高端输出为控制 ...

  4. Linux内存描述之高端内存–Linux内存管理(五)

    服务器体系与共享存储器架构 日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.7 X86 & arm gatieme LinuxDeviceDriver ...

  5. python三级菜单实例(傻瓜版和进阶版)

    程序: python三级菜单 要求: : 1.打印省.市.县三级菜单 2.可返回上一级 3.可随时退出程序 方案一:傻瓜版(其实傻瓜版考察的主要是思路!思路清楚了,那才不是傻瓜!O(∩_∩)O哈哈~) ...

  6. Android自己定义控件:老版优酷的三级菜单(效果图 + Demo)

    效果图: 制作思路: 1.先分析这个效果,事实上能够理解为把三级菜单分成level1,level2,level3,level1是始终显示的. 点击level1后,level2会出现:点击level2后 ...

  7. Python 三级菜单 增强版

    需要实现的功能是:三级菜单1.从文本内读出选项2.查询每一级的选项,并能对选项进行增/删/改功能3.每一级可以退出程序或者返回上一层 2018-5-14 更新内容 思路 实现过程中的BUG及解决方案: ...

  8. Python学习-------------------三级菜单简单版

    题目: 多级菜单         1.三级菜单         2.可依次选择进入的各子菜单         3.所需新知识点:列表.字典 ReadMe: 这个做循环,比较绕脑子 点开运行即可 Min ...

  9. HubbleDotNet 最新绿色版,服务端免安装,基于eaglet 最后V1.2.8.9版本开发,bug修正,支持一键生成同步表

    HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索数据库组件.开源协议是 Apache 2.0.HubbleDotNet提供了基于SQL的全文检索接口,使用者只需会 ...

随机推荐

  1. FFmpeg制作+x264+faac

    https://blog.csdn.net/leixiaohua1020/article/details/47071547  雷神的博客 https://www.jianshu.com/p/3f023 ...

  2. cors 详解

    http://www.ruanyifeng.com/blog/2016/04/cors.html

  3. zcat,zgrep用法

    为减少日志文件占用的空间,很多情况下我们会将日志文件以天或周为周期打包成tar.gz 包保存.虽然这样做有利空间充分利用,但当我们想查看压缩包内的内容时确很不方便.如果只是一个tar.gz文件,可以将 ...

  4. [daily][qemu][kvm] qemu增加减少CPUID

    做 DPDK 大页内存测试, 发现KVM模拟出来的CPU不支持 1GB 的大页 可以使用如下命令是否支持: [root@dpdk ~]# cat /proc/cpuinfo |grep pdpe1gb ...

  5. Postfix 邮件服务器搭建

    搭建服务环境: Centos 6 配置域名hosts: mail.demonC6.com 1.清理系统自带的邮件软件 # rpm -qa | grep sendmail* # rpm -e sendm ...

  6. 浅谈Trie树

    Trie树,也叫字典树.顾名思义,它就是一个字典 字典是干什么的?查找单词!(英文字典哦) 个人认为字典树这个名字起得特别好,因为它真的跟字典特别像,一会r你就知道了. 注:trie的中文翻译就是单词 ...

  7. Spring对Bean装配详解

    1.Spring提供了三种装配bean的方式: 2.自动装配bean: 3.通过Java代码装配bean 4.通过XML装配bean 前言:创建对象的协作关系称为装配,也就是DI(依赖注入)的本质.而 ...

  8. OpenWrt 路由系统上抓包

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/qianguozheng/article/details/32108093 前言: 做路由器开发,难免 ...

  9. MySQL分支Percona

    MySQL分支Percona 转载自:http://www.cnblogs.com/cevin/archive/2012/05/12/2496859.html 官方网站:http://www.perc ...

  10. Vue-selller 饿了吗 - 准备工作

    安装脚手架vue-cli npm install -g vue-cli 建立项目 vue init webpack sell(sell是项目名称) 进入项目目录 cd sell 可以看目录结构: ls ...