Python实现三级菜单(字典和列表的使用)

menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'优酷': {}
},
'上地': {
'百度': {}
}

},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {}
},
'天通苑': {},
'回龙观': {}
},
'朝阳': {},
'东城': {}
},

'上海': {
'闵行': {
'人民广场': {
'炸鸡店': {}
}
},
'闸北': {
'火车站': {
'携程': {}
}
},
'浦东': {}
},

'山东': {}
}

current_menu = menu
path_menu = []

while True:
print("菜单(menu)".center(15, '-'))
# 将菜单字典关键字转化为列表类型,便于给菜单加上数字编号,方便用户输入
current_key_list = list(current_menu.keys())
for index, i in enumerate(current_key_list):
print("%s. %s".center(15) % (index, i))
# 对用户输入字符进行校验和容错处理(意外输入空格或回车不报错)
user_choice = input("请输入菜单编号,返回按b,退出按q:").strip()
if user_choice.isdigit() and 0 <= int(user_choice) < len(current_key_list):
# 根据用户输入编号反向查询字典的关键字
current_key = current_key_list[int(user_choice)]
if current_key in current_menu:
# 根据用户进入的菜单层级,保存历史菜单路径并进行下一层菜单的循环打印
path_menu.append(current_menu)
current_menu = current_menu[current_key]
elif user_choice.casefold() == 'b':
if current_menu != menu:
current_menu = path_menu.pop()
else:
print("----已经回到主菜单----!")
elif user_choice.casefold() == 'q':
exit()

转载于:https://www.cnblogs.com/eric99/p/9992117.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

停止使用p = 0.05

How many of you use p0.05 as an absolute cut off? p ≥ 0.05 means not significant. No evidence. Nada. And then p < 0.05 great it’s significant. This is a crude way of using p-values, and hopefully I will convince you of this.你们中有多少人使用p 0.05作…

centos7系统根目录扩容

比如 点击了后 点击创建虚拟磁盘 选择一个 20G 然后启动虚拟机使用fdisk查看所有的磁盘 看是否新增了一个20G的硬盘 [rootlocalhost ~]# fdisk -l磁盘 /dev/sda&#xff1a;8589 MB, 8589934592 字节&#xff0c;16777216 个扇区 Units 扇区 of 1 * 512 512 bytes 扇区大小(…

instrumentation模拟很多activity的操作

android.app.Instrumentation好像原来是用来做测试的, 可以用来模拟很多activity的操作 主要代码如下 如果在文本框中输入24,或者25 点击按钮就能模拟音量加减键 键值可以查看android.view.KeyEvent [java] view plaincopy package com.qefee.testinstrumentation; import…

成像数据更好的展示_为什么更多的数据并不总是更好

成像数据更好的展示Over the past few years, there has been a growing consensus that the more data one has, the better the eventual analysis will be.在过去的几年中&#xff0c;越来越多的共识是&#xff0c;数据越多&#xff0c;最终的分析就越好。 However, just a…

支付宝架构

支付宝系统架构图如下&#xff1a; 支付宝架构文档有两个搞支付平台设计的人必须仔细揣摩的要点。 一个是账务处理。在记账方面&#xff0c;涉及到内外两个子系统&#xff0c;外部子系统是单边账&#xff0c;满足线上性能需求&#xff1b;内部子系统走复式记账&#xff0c;满足…

怎样可以跨进程测试

在Android系统下模拟鼠标键盘等输入设备&#xff0c;网络上资料非常多。但不少是人云亦云&#xff0c;甚至测试都不愿测试一下就抄上来了。这次写一点体会&#xff0c;当作抛砖引玉。0. 背景知识&#xff1a;众所周知&#xff0c;Android是将Framework架在Linux之上的系统。Lin…

Android Studio 导入新工程项目

1 导入之前先修改工程下相关文件 1.1 只需修改如下三个地方1.2 修改build.gradle文件 1.3 修改gradle/wrapper/gradle-wrapper.properties 1.4 修改app/build.gradle 2 导入修改后的工程 2.1 选择File|New|Import Project 2.2 选择修改后的工程 如果工程没有变成AS符号&#xf…

马蜂窝张矗:绩效考核是为了激发工作潜力,而不是逃避问题

3 月 23 日&#xff0c;由高端技术领导者社交平台 TGO 鲲鹏会主办的 GTLC 全球技术领导峰会分站首站在北京举行。会上马蜂窝技术副总裁 \u0026amp; TGO 鲲鹏会会员张矗发表了主题为“我在马蜂窝的技术管理实践”的演讲。本文根据其演讲整理而成。大家好&#xff0c;我是来自马蜂…

vue domo网站_DOMO与Tableau-逐轮

vue domo网站Let me be your BI consultant. Best yet, let me be your free consultant on the following question:让我成为您的BI顾问。 最好的是&#xff0c;让我成为您的免费顾问 &#xff0c;解决以下问题&#xff1a; DOMO vs. Tableau — What should I use?DOMO vs.…

fiddler抓包1-抓小程序https包

抓小程序包和抓app包是一样的操作方法&#xff1b;安卓用fiddler&#xff0c;ios用charles&#xff1b; 一、环境准备 1.电脑已装最新版fiddler 2.手机和电脑在同一局域网 二、fiddler设置 1.fiddler>Tools>Options>HTTPS 勾选Capture HTTPS CONNECTs 及下边的子项&am…

多态使用的前提

1&#xff1a;必须是继承&#xff08;extends&#xff09;&#xff0c;实现&#xff08;implements&#xff09; 才行2&#xff1a;必须要重写&#xff08;覆盖&#xff09;父类的方法。转载于:https://www.cnblogs.com/liyunchuan/p/10663788.html

Linux下的 FTP

1.安装vsftpd yum install vsftpd 2.启动/重启/关闭vsftpd服务器 [rootlocalhost ftp]# /sbin/service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] OK表示重启成功了. 启动和关闭分别把restart改为start/stop即可. 如果是源码安装的,到…

python入门23 pymssql模块(python连接sql server增删改数据 )

增删改数据必须connect.commit()才会生效 回滚函数 connect.rollback() 连接数据库 dinghanhua sql server增删改 import pymssqlserver 192.168.1.1 user user password 111111 database testdbconnect pymssql.connect(server server,user user,passwordpassword,da…

每个人都应该使用的Python 3中被忽略的3个功能

重点 (Top highlight)Python 3 has been around for a while now, and most developers — especially those picking up programming for the first time — are already using it. But while plenty of new features came out with Python 3, it seems like a lot of them ar…

iframe自适应高度

为什么需要使用iframe自适应高度呢&#xff1f;其实就是为了美观&#xff0c;要不然iframe和窗口长短大小不一&#xff0c;看起来总是不那么舒服&#xff0c;特别是对于我们这些编程的来说&#xff0c;如鲠在喉的感觉。 首先设置样式 body{margin:0; padding:0;} 如果不设置bod…

.Net转Java自学之路—SpringMVC框架篇八(RESTful支持)

RESTful架构&#xff0c;REST即Representational State Transfer。表现层状态转换&#xff0c;就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便&#xff0c;所以得到越来越多网站的采用。 RESTful其实就是一个开发理念&#xff0c;是对http的很…

冲刺第七天

今天任务进行情况&#xff1a;今天我们将我们的游戏导到界面形成可用的应用程序&#xff0c;并且进行调试与运行&#xff0c;让同学试玩&#xff0c;发现了困难并加以改正。 遇到的困难及解决方法&#xff1a; 运行时发现游戏界面中UI的button和image的位置会随分辨率的不同而发…

数据探查_数据科学家,开始使用探查器

数据探查Data scientists often need to write a lot of complex, slow, CPU- and I/O-heavy code — whether you’re working with large matrices, millions of rows of data, reading in data files, or web-scraping.数据科学家经常需要编写许多复杂&#xff0c;缓慢&…

Node.js Streams:你需要知道的一切

Node.js Streams&#xff1a;你需要知道的一切 图像来源 Node.js流以难以使用而闻名&#xff0c;甚至更难理解。好吧&#xff0c;我有个好消息 - 不再是这样了。 多年来&#xff0c;开发人员在那里创建了许多软件包&#xff0c;其唯一目的是简化流程。但在本文中&#xff0c;我…

oracle表分区

1.表空间:是一个或多个数据文件的集合,主要存放的是表,所有的数据对象都存放在指定的表空间中;一个数据文件只能属于一个表空间,一个数据库空间由若干个表空间组成,其中包括:a.系统表空间:10g以前,默认系统表空间是System,10g包括10g以后,默认系统表空间是User,存放数据字典和视…