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':{} }, '中关村':{ '爱奇艺':{}, ...
随机推荐
- tensorflow l2_loss函数
1.l2_loss函数 tf.nn.l2_loss(t, name=None) 解释:这个函数的作用是利用 L2 范数来计算张量的误差值,但是没有开方并且只取 L2 范数的值的一半,具体如下: out ...
- shell 脚本编写 if else then
if ....; then .... elif ....; then .... else .... fi 大多数情况下,可以使用测试命令来对条件进行测试.比如可以比较字符串.判断文件是否存在及是否可读 ...
- vue使用中的随笔
在vue中vue-router配置的路径默认有"#"号,虽然无伤大雅,但是很多客户都不想看到,所以在初始配置路由的时候加上下面一句代码就可以了 mode:'history', 路径 ...
- WCF Cookie处理
wcf操作cookie看似很简单,如果不对Wcf研究一把还是很难的,基本上无从下手. 这里上一图 上面的结果,岂止是坑爹,简直就是坑爹!!! 废话不多说,直接上代码: cookie读取 var req ...
- Codeforces Round #427 (Div. 2)
B. The number on the board 题意: 有一个数字,它的每个数位上的数字的和不小于等于k.现在他改变了若干位,变成了一个新的数n,问现在的数和原来的数最多有多少位不同. 思路: ...
- webpack2 前篇
webpack2 前篇 #webpack 前两天用了一天半时间琢磨了下webpack2,想起去年这时候,面对webpack1那样恶心的文档,前前后后搞了好几次才摸索清楚,那真是吐了. 划重点 其实we ...
- Docker Registry
前言 上一篇文章讲了Docker Machine实现多主机Docker节点的管理.本文讲解如何实现Docker Registry,其实这个在第一篇Docker入门一文中已经简单介绍,本文仅是对一些细节 ...
- python 排序sorted
num = [3,2,4,6,5] anum = sorted(num) dnum = sorted(num,reverse=True) print '升序:',anum # 升序: [2, 3, 4 ...
- 14. leetcode 383. Ransom Note
Given an arbitrary ransom note string and another string containing letters from all the magazines, ...
- Fliptile 翻格子游戏[Usaco2007 Open]
题目描述 Farmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. ...