python 三级菜单 while循环三次,湖北省市-县-街道的选择,3个while的循环 -day2
python编写一个三级while的循环菜单
1.定义字典,字典里面嵌套字典,内嵌字典的值为列表。
思路:
湖北省的市:字典中的
定义3个字典,用于存储 {序列-键:市名}
shiqu_dir = {}
{序列-键:县}
xian_dir ={}
{序列-键:街道}
jiedao_dir = {}
函数将序列和键一一对应。
for number,key in enumerate(Hbei_map.keys()) 获取序列键和市名存储到 市名字典 用一个列表 chose = [] 来存储所选择的市--县程-街道
chose[0],chose[1],chose[2]最后使用切片返回 中间输入全部使用的判断方式for循环: for k,v in xxx.items():
if input == k:
让用户只能输入序列中的数字。使用判断语句:
if int(input) not in 字典.keys():
print("您输入了非法的序列,请输入一下序列 {}".format(shiqu_list))
# -*- coding: utf-8 -*-
__author__ = 'hujianli'
import sys
Hbei_map = {
"武汉市":{
"江岸区":["上海街","大智街","一元街","车站街","四唯街","永清街","球场街","西马街","台北街","劳动街","花桥街","后湖街","谌家矶街"],
"硚口区":["易家墩街道","韩家墩街道","宗关街道","汉水桥街道","宝丰街道","荣华街道","崇仁街道","汉中街道"],
"武昌区":["积玉桥街道","杨园街道","徐家棚街道","新河街道"]
}, "荆州市":{
"沙市区":["黄石港","崇文街道","解放路街道"],
"荆州区":["城南街道","西城街道","东城街道","马山镇","川店镇"],
"松滋市":["新江口镇","南海镇","八宝镇","陈店镇"],
"公安县":["斗湖堤镇","埠河镇","杨家厂镇","斑竹垱镇"],
"监利县":["容城镇","白螺镇","朱河镇"] },
"孝感市":{
"孝南区":["肖港镇","书院街道","车站街道","新华街道"],
"应城市":["城中街道","城北街道","杨河镇","三合镇"],
"安陆市":["李店镇","巡店镇","雷公镇","陈店乡"], },
}
# print(Hbei_map["孝感市"]["应城市"])
shiqu_dir = {}
xian_dir ={}
jiedao_dir = {} def jiance(name):
if len(name) == 0:
sys.exit("\033[31;1m选择不能为空,清重新输入~~\033[0m")
elif shiqu == "quit" or shiqu == "exit":
sys.exit("\033[31;1m 退出程序,三级菜单退出~~ \033[0m")
else:
return True print("==============================================================================================================")
print("湖北省下面的市区如下: ")
for number,key in enumerate(Hbei_map.keys()):
print(str(number+1) + ": " + str(key))
shiqu_dir[number+1] = key chose = []
shiqu_list = [x+1 for x in range(len(shiqu_dir.keys()))] while True:
print("==========================================================================================================")
shiqu = input("请输入您要查询的市区所对应的序列号,输入exit或者quit自动会退出.:")
jiance(shiqu)
if int(shiqu) not in shiqu_dir.keys():
print("您输入了非法的序列,请输入一下序列 {}".format(shiqu_list))
else:
for keys,vlaue in shiqu_dir.items():
if int(shiqu) == keys:
chose = []
chose.append(vlaue)
print("================================================================================================")
print("该市区下面的县级市或者片区域,县城列表如下:") for number,keys_xian in enumerate(Hbei_map[vlaue].keys()):
print(str(number+1)+ ":" + str(keys_xian))
xian_dir[number+1] = keys_xian while True:
print("=============================================================================================")
xian = input("请输入要查询的县城所对应的序列号,quit/exit退出: ")
jiance(xian)
xian_list = [x+1 for x in range(len(xian_dir.keys()))]
if int(xian) not in xian_dir.keys():
print("您输入了非法的序列,请输入一下序列 {}".format(xian_list))
else:
for k,v in xian_dir.items():
if int(xian) == k:
chose.append(v) jiedao_li = Hbei_map[chose[0]][chose[1]]
for k,v in enumerate(jiedao_li):
print(str(k+1) + ": " + str(v))
jiedao_dir[k+1] = v while True:
print("=====================================================================================")
jiedao = input("请输入街道所对应的序列号 退出请输入quit/exit: ")
jiance(jiedao)
jiedao_list = [x+1 for x in range(len(jiedao_dir.keys()))]
if int(jiedao) not in jiedao_dir.keys():
print("您输入了非法的序列,请输入一下序列 {}".format(jiedao_list))
else:
for k,v in jiedao_dir.items():
if int(jiedao) == k:
chose.append(v)
print("=================================================================================")
print("\033[35;1m你选择的市:%s 县城是:%s 街道是:%s\033[0m"%(chose[0],chose[1],chose[2]))
print("===================================================================================")
break
break
break
python 三级菜单 while循环三次,湖北省市-县-街道的选择,3个while的循环 -day2的更多相关文章
- python(5)- 简单练习:python三级菜单优化
python三级菜单优化,菜鸟版链接:http://www.cnblogs.com/xuyaping/p/6648170.html menu = { '北京':{ '海淀':{ '五道口':{ 'so ...
- python三级菜单实例(傻瓜版和进阶版)
程序: python三级菜单 要求: : 1.打印省.市.县三级菜单 2.可返回上一级 3.可随时退出程序 方案一:傻瓜版(其实傻瓜版考察的主要是思路!思路清楚了,那才不是傻瓜!O(∩_∩)O哈哈~) ...
- Python 三级菜单与优化(一层循环嵌套)
优化的思路是使用单层循环嵌套完成三级菜单,这个优化思路我非常喜欢,我喜欢在编程的时候用最少的东西写出同样的效果,通常这样会绕来绕去,但非常有趣!!! 需求: 1.运行程序输出第一级菜单: 2.选择一级 ...
- python三级菜单的实现
一.作业要求 1.使用字典实现三级菜单功能 2.直接输入前面数字进入下一级菜单 3.按B返回上一级,按Q退出 二.需要知识点 1.if循环 2.for循环,enumerate的用法 3.while循环 ...
- Python 三级菜单 增强版
需要实现的功能是:三级菜单1.从文本内读出选项2.查询每一级的选项,并能对选项进行增/删/改功能3.每一级可以退出程序或者返回上一层 2018-5-14 更新内容 思路 实现过程中的BUG及解决方案: ...
- python三级菜单
#-*- coding:utf-8 -*-#Author:gxli #一级菜单项def menu(): #遍历字典dic一级菜单 print('-----------一级菜单------------- ...
- Python——三级菜单
#三级菜单函数 menu = { '北京':{ 海淀:{ '五道口':{} '中关村':{} '上帝':{} } '昌平':{} '朝阳':{} '东城':{} }, '上海':{} '山东':{} ...
- 4th,Python三级菜单
1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 data = { '北京': ...
- [terry笔记]python三级菜单
把三级菜单输出,选择后逐层显示,”b“返回上一级菜单. menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村': ...
随机推荐
- int类型和byte类型的强制类型转换
今天在读<Java网络编程>这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方.这个地方有点细节,不过就应该把这种细节把握住. 情况是这样的,讲到In ...
- C#的内存管理原理解析+标准Dispose模式的实现
本文内容是本人参考多本经典C#书籍和一些前辈的博文做的总结 尽管.NET运行库负责处理大部分内存管理工作,但C#程序员仍然必须理解内存管理的工作原理,了解如何高效地处理非托管的资源,才能在非常注重性能 ...
- 用node编写自己的cli工具
工作中接到新项目,开发前都需要先规划项目目录,然后一个个创建文件,搭建sass编译环境,下载jquery,Swiper等类库... 这些准备工作都要花上不少时间.每做一个项目,都会遇到同样的问题,再重 ...
- Lua学习(3)——控制结构
Lua提供了一组传统的,小巧的控制结构,包括用于条件执行的if,用于迭代的while.repeat和for.所有的控制结构都有一个现实的终止符号:if for while 都以end结尾,repeat ...
- click和blur事件冲突解决方案
场景:例如做一个模仿百度搜索的搜索框,输入文字下面会有匹配项,当点击下拉项中的值时,就将值添加到搜索框中同时隐藏下拉框,点击其他地方就直接隐藏下拉框,这时所需要的事件分别为 下拉框事件onclick, ...
- 你知道“移动端车牌识别”可以嵌入到PDA中应用吗?
一.移动端车牌识别产品描述 移动端车牌识别软件是基于移动平台的OCR识别应用程序,支持Android/IOS等多种主流移动操作系统.该产品只需通过智能手机或Pad的摄像头对准车牌,无需拍照,实现自动采 ...
- [C++][OpenGL]自己写GUI(0)——介绍
文章可转载,转载请注明出处:http://www.cnblogs.com/collectionne/p/6928612.html.文章未完,如果不在博客园(cnblogs)发现本文,请访问前面的链接查 ...
- ImageView最大高度和宽度失效解决方案
解决方案 做RecyclerView的 item 布局时,用到imageview ,可是图片按原始尺寸显示,不规范. 所以去google了一下imageview的宽高限制,就试了下maxheight/ ...
- {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习
要求: 实现多个客户端发送文件给一个服务器端 提示:多个人创建客户端发送文件,服务端循环接收socket,从socket中获取文件 说明:这里我们只要建立一个服务端就可以了,然后让多台电脑使用客户端给 ...
- BOM中的各种height
BOM中的高度属性主要涉及三块:screen.window.文档下的元素. screen 其中screen最简单,代表着显示器的对象. screen.height :屏幕高度,像素为单位. scree ...