python 打印三级菜单
要求:
1、用户选择城市菜单编号显示对应的下级菜单
2、可以返回上级菜单,只有在用户确定正常退出时才退出
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# __author__:cjx
import sys china_map = {
'山东': {
'青岛': ['四方', '黄岛', '崂山', '李沧', '城阳'],
'济南': ['历城', '槐荫', '高新', '长青', '章丘'],
'烟台': ['龙口', '莱山', '牟平', '蓬莱', '招远']
},
'江苏': {
'苏州': ['沧浪', '相城', '平江', '吴中', '昆山'],
'南京': ['白下', '秦淮', '浦口', '栖霞', '江宁'],
'无锡': ['崇安', '南长', '北塘', '锡山', '江阴']
},
'浙江': {
'杭州': ['西湖', '江干', '下城', '上城', '滨江'],
'宁波': ['海曙', '江东', '江北', '镇海', '余姚'],
'温州': ['鹿城', '龙湾', '乐清', '瑞安', '永嘉']
},
'安徽': {
'合肥': ['蜀山', '庐阳', '包河', '经开', '新站'],
'芜湖': ['镜湖', '鸠江', '无为', '三山', '南陵'],
'蚌埠': ['蚌山', '龙子湖', '淮上', '怀远', '固镇']
},
'广东': {
'深圳': ['罗湖', '福田', '南山', '宝安', '布吉'],
'广州': ['天河', '珠海', '越秀', '白云', '黄埔'],
'东莞': ['莞城', '长安', '虎门', '万江', '大朗']
}
} province_list = list(china_map.keys()) # 用list函数把字典的key生成列表并赋值 while True: # 最外层死循环
print(' 省 '.center(50, '*')) # 利用字符串类型的方法打印提示符
for i,p in enumerate(province_list): # 利用enumerate函数取出元素对应的索引及元素
print(i+1,p) # 由于列表的索引是从0开始计数的,因此要 +1 展示更好合适
p_id = input('请输入要查看的省名称编号,退出请输入 q:')
if p_id.isdigit():
p_id = int(p_id) # 把输入的编号转换成int型
if p_id > 0 and p_id <= len(province_list): # 判断是否输入的是有效的
pro_name = province_list[p_id - 1] # 用用户输入的编号取出对应的城市名,索引从0开始的,因此要 -1 才是对应的值
city_list = list(china_map[pro_name].keys()) # 根据用户输入,获取二级菜单列表
while True: # 进入二级菜单死循环
print(' 市 '.center(50, '*'))
for i, c in enumerate(city_list):
print(i+1, c)
c_id = input('请输入你要查看的市名称编号,返回上一级请输入 b,退出请输入 q :')
if c_id.isdigit():
c_id = int(c_id)
if 0 < c_id <= len(city_list):
city_name = city_list[c_id-1]
town_list = china_map[pro_name][city_name]
while True:
print(' 县 '.center(50, '*'))
for i, t in enumerate(town_list):
print(i+1, t)
b_or_q = input('已经到最后一层,返回上一级请输入 b,退出请输入 q :')
if b_or_q == 'b':
break # 跳出循环,即回到第一级循环
elif b_or_q == 'q':
exit(0)
else:
print('输入有误!')
else:
print('您输入的ID %d 不存在!' % c_id)
elif c_id == 'b':
break # 跳出循环,即回到第二级循环
elif c_id == 'q':
sys.exit('正在退出 ......')
else:
print('无效输入') else:
print('您输入的ID %d 不存在!' % p_id) # 如果输入的不是正确的范围提示输入的不存在
elif p_id == 'q':
exit()
else:
print('无法识别您的输入') # 如果输入的不是可以转换成数字的字符就提示非法输入
运行效果演示:
*********************** 省 ************************
1 山东
2 江苏
3 浙江
4 安徽
5 广东
请输入要查看的省名称编号,退出请输入 q:5
*********************** 市 ************************
1 深圳
2 广州
3 东莞
请输入你要查看的市名称编号,返回上一级请输入 b,退出请输入 q :2
*********************** 县 ************************
1 天河
2 珠海
3 越秀
4 白云
5 黄埔
已经到最后一层,返回上一级请输入 b,退出请输入 q :b
*********************** 市 ************************
1 深圳
2 广州
3 东莞
请输入你要查看的市名称编号,返回上一级请输入 b,退出请输入 q :b
*********************** 省 ************************
1 山东
2 江苏
3 浙江
4 安徽
5 广东
请输入要查看的省名称编号,退出请输入 q:3
*********************** 市 ************************
1 杭州
2 宁波
3 温州
请输入你要查看的市名称编号,返回上一级请输入 b,退出请输入 q :q
正在退出 ......
原文:http://www.cnblogs.com/pyramid1001/p/5803294.html
python 打印三级菜单的更多相关文章
- python打怪之路【第三篇】:利用Python实现三级菜单
程序: 利用Python实现三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 coding: menu = { '北京':{ '朝阳':{ '国贸':{ 'CICC':{}, ' ...
- 【python】——三级菜单
作业需求: 打印三级菜单 可返回上一级 可随时退出程序 #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: __Json.Zzgx__ menu ...
- python实现三级菜单间的前后跳转
#录入菜单def createMenu(): Menu = {} provinces = ["陕西","四川","江苏"] sh ...
- python之三级菜单
python之三级菜单 要求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功 ...
- Python学习-------------------三级菜单简单版
题目: 多级菜单 1.三级菜单 2.可依次选择进入的各子菜单 3.所需新知识点:列表.字典 ReadMe: 这个做循环,比较绕脑子 点开运行即可 Min ...
- python实现三级菜单源代码
8月4号早晨天气晴,继续学习‘Alex’的python视频,写了用字典实现三级菜单的代码,都是循环和判断比较lower,废话不多说直接贴码: #!/user/bin/env python #-*-co ...
- python作业三级菜单day1(第一周)
一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二三级菜单文 ...
- python 实现三级菜单
要求: 可选择进入各级子菜单 在各级菜单下可以选择退出 在子菜单下可以返回上一级菜单 Readme: 运行程序,输入菜单选项,进入对应的子菜单 # Joe Young data = { '山东':{ ...
- Python入门-三级菜单
作业题目: 三级菜单 作业需求: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, ...
随机推荐
- 学习java窗口基本操作时无聊写的
学习java窗口基本操作时无聊写的 就当记录 代码如下: package day08; import java.awt.BorderLayout;import java.awt.Color;impor ...
- ES6速记手册
1.三元操作符 这是一个很好的节省代码当你想要编写一个如果. . else语句在一线. 普通写法: const x = 20;let big;if (x > 10) { 速记: const bi ...
- django MVC模式 数据库的操作mysql
介绍:本节课我们继续学习djangoWEB框架的开发,这节课主要是学习如何访问数据库,django如何自动为我们创建好表结构等相关内容. 1.首先我们打开settings.py找到DATABASES关 ...
- 一步一步学Vue(五)
本篇是是vue路由的开篇,会以一个简单的demo对vue-router进行一个介绍,主要覆盖以下几个常用场景: 1.路由跳转 2.嵌套路由 3.路由参数 1.Vue-Router 一般来说,路由定义就 ...
- STF,docker学习资料整理
- FTP服务器 Serv-u 环境搭建
一.安装 *Windows 10 *Serv-u Windows-v15.1.2 *Mysql Mysql 5.7 安装成功后开始配置serv-u. 二.配置 1.新建域(test) 点击新建域,开始 ...
- 安卓平台使用pocketSphinx离线语音识别
版权声明:本文为elecdog原创文章,可以转载,但必须在明确位置注明出处!谢谢合作. 关于语音识别,国内已经有比较好的公司推出相关的服务了,比如百度免费的离在线融合语音识别以及讯飞收费的在线和离线语 ...
- ES6模板字面量
前面的话 JS 的字符串相对其他语言来说功能总是有限的,事实上,ES5中一直缺乏许多特性,如多行字符串.字符串格式化.HTML转义等.ES6通过模板字面量的方式进行了填补,模板字面量试着跳出自己JS已 ...
- 设计模式(3)抽象工厂模式(Abstract Factory)
设计模式(0)简单工厂模式 设计模式(1)单例模式(Singleton) 设计模式(2)工厂方法模式(Factory Method) 源码地址 0 抽象工厂模式简介 0.0 抽象工厂模式定义 抽象工厂 ...
- windows系统查看支持最大内存
1.使用快捷键:win+r打开命令窗口. 按回车到命令界面 2.弹出如下命令界面,在界面C:\Users\Administrator>处输入wmic memphysical get maxcap ...