Python学习之编写三级菜单(Day1,作业二)
作业二:多级菜单
- 三级菜单
- 可依次进入各子菜单
- 在各级菜单中输入B返回上一级Q退出程序
知识点:字典的操作,while循环,for循环,if判断
思路:
1.开始,打印一级菜单让用户进行选择(可以输入q进行退出)
2.用户输入正确,展开二级菜单
3.要是用户输入错误,提示输入出错,并重新循环
4.用户选择二级菜单(b重新循环,q退出)
5.用户输入正确,打印三级菜单
6用户输入错误,提示输入错误,并重新进行循环
7在三级菜单中,用户可以输入b重新循环,输入q退出
流程图如下:

代码如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
district_maps = { #定义字典
"华东区":{"山东":["济南","青岛","淄博"],"江苏":["苏州","南京","无锡"],"浙江":["杭州","宁波","温州"],},
"华南区":{"广东":["广州","深圳","珠海"],"广西":["桂林","柳州","北海"],"海南":["三亚","海口","三沙"]},
"华中区":{"湖北":["武汉","宜昌","黄冈"],"湖南":["长沙","株洲","湘潭"],"江西":["南昌","九江","上饶"]},
"华北区":{"北京":["东城区","朝阳区","海淀区"],"天津":["和平区","河西区","河北区"],"河北":["石家庄","唐山","张家口"]},
"西北区":{"宁夏":["银川","吴忠","固原"],"青海":["西宁","海东","海北藏族自治州"],"陕西":["西安","咸阳","延安"]},
"西南区":{"四川":["成都","绵阳","广元"],"云南":["昆明","丽江","玉溪"],"贵州":["贵阳","安顺","铜仁"]},
"东北区":{"辽宁":["沈阳","大连","鞍山"],"吉林":["长春","吉林","辽源"],"黑龙江":["哈尔滨","齐齐哈尔","牡丹江"]},
"港澳台区":{"香港":["香港岛","九龙半岛","新界"],"澳门":["澳门半岛","离岛","路氹城"],"台湾":["台北","台中","台南"]},
}
while True:
print("--------------中国省市查询--------------") #标题
for a in district_maps: #将字典中的key值赋给a,打印a
print(a)
print("---------------------------------------")
while True :
district_name = input("请输入您要查看的大区(q可退出):") #输入大区名,赋值给district_name
if district_name in district_maps: #检查输入的大区名是否在字典中
sheng_name = district_maps[district_name] #使用输入的信息作为key,取出省信息,存在字典中
print("------------%s所包含的省份-------------" % district_name) #打印所输入的区里的省份
for b in sheng_name: #遍历列表,取出地市名字,打印出来
print(b)
print("---------------------------------------")
city_name = input("请输入您要查看的省(b可返回上级,q可退出):") #输入想要查看的省名
if city_name in sheng_name: #如果这个省名是否在省名列表中
shi_name = district_maps[district_name][city_name] #取出次大区中的省名,存在列表中
print("------------%s所包含的省份-------------" % city_name)
for c in shi_name: #遍历列表,取出地市名字,打印出来
print(c)
print("------------------------------------------")
if city_name == "q": #用于最里面的循环退出程序
exit("-----------------谢谢使用------------------")
if city_name == "b": #用于最里面的循环跳出循环
break
if city_name not in sheng_name: #如果输入的省名不在省名列表中
print("您的输入有误,请重新输入")
break #跳出循环重新开始
last_stage = input("请问是要返回上级(b)还是退出(q):") #最后一级
if last_stage == "q": #输入q退出
exit("----------------谢谢使用-----------------")
elif last_stage == "b" : #输入b重新进入循环
print("------------------------------------------")
break
elif last_stage != "q"or"b": #输入的不是q也不是b,提示错误并退出使用
exit("--------------您的输入有误,谢谢使用------------")
if district_name == "q": #在第一级中输入q将退出程序
exit("----------------谢谢使用-------------------")
if district_name not in district_maps: #如果输入的值没有在字典中,提示输入错误,重新进行循环
print("------------------------------------------")
print("您的输入有误,请重新输入")
print("------------------------------------------")
三级菜单
做人靠自己!!
Python学习之编写三级菜单(Day1,作业二)的更多相关文章
- Python学习5,三级菜单实例
_author_ = "Happyboy" data = { '北京':{ "昌平":{ "沙河":["Happyboy" ...
- Python学习之字典--三级菜单
效果图: 实现代码: dic = { '人物':{ '帽子':{'前年玄铁帽'}, '武器':{'屠龙宝刀'} }, '属性':{ '力量':{35}, '敏捷':{66} }, '任务':{ '主线 ...
- Python学习第二天-编写三级菜单
编写三级菜单:1. 运行程序输出第一级菜单2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单3. 菜单数据保存在文件中4. 让用户选择是否要退出5. 有返回上一级菜单的功能 # Author: z ...
- Python进阶实战之三级菜单
目录 一.Python进阶实战之三级菜单 1.1 面条版 1.2 文艺青年版 一.Python进阶实战之三级菜单 打印省.市.县三级菜单 可返回上一级 可随时退出程序 1.1 面条版 menu = { ...
- python作业三级菜单day1(第一周)
一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二三级菜单文 ...
- python第四天 三级菜单新思路
今天是一个坎,在做三级菜单时卡住了,因为想要简洁的代码,就要用到递归函数,卡的不要不要的!不过最后在同学老师的提点帮助下,还是解决了! 2017-5-10发现之前的代码有BUG今天 修改了! 作业要求 ...
- day1作业二:多级菜单
作业二:多级菜单 1.三级菜单 2.可以次选择进入各子菜单 3.所需新知识点:列表.字典 4.打印b回到上一层 5.打印q退出循环 流程图如下: readme: (1)存储三级菜单的字典;设置 ...
- day1作业二:多级菜单操作
作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 思路: (1)首先定义好三级菜单字典: (2)提 ...
- day1作业二:多级菜单操作(函数实现)
作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 本示例的三级菜单是一个yaml文件格式,格式如下 ...
随机推荐
- css3弹性盒模型(Flexbox)
Flexbox是布局模块,而不是一个简单的属性,它包含父元素和子元素的属性. Flexbox布局的主体思想是似的元素可以改变大小以适应可用空间,当可用空间变大,Flex元素将伸展大小以填充可用空间,当 ...
- css3渐变详解
今天总结渐变的问题,渐变分为线性渐变.径向渐变.呼呼,废话少说, 线性渐变:background:linear-gradient(设置渐变形式,第一个颜色起点,中间颜色点 中间颜色的位置,结束点颜色) ...
- 英特尔发布全新英特尔® INDE 2015工具套件
2014年10月15日,英特尔发布了全新的英特尔® Integrated Native Developer Experience 2015工具套件(简称英特尔® INDE).该产品提供了一系列最佳工具 ...
- Sublime Text2 快捷键设置
设置Tab两个空格: 点击 Preference -> Settings-User "tab_size":2, "translate_tabs_to_spaces& ...
- 在Windows XP下手动安装Apache+MySQL+PHP环境 要点
在整个wamp环境搭建中,本质的工作如下: 1,配置系统对php中dll文件能默认处于调用状态.在windos下,对dll文件系统默认处于调用状态的,有两种采用的方式.第一种是:把需要调用dll文件复 ...
- Linux下vim文件未正常退出,修复文件
Linux下vim文件未正常退出,会产生一个 .文件名.swp的文件 ls -al ,rm 删掉.swp文件 之后就可以正常使用文件了
- Pie--hdu1969(二分法)
Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- bzoj2014 [Usaco2010 Feb]Chocolate Buying
Description 贝西和其他奶牛们都喜欢巧克力,所以约翰准备买一些送给她们.奶牛巧克力专卖店里 有N种巧克力,每种巧克力的数量都是无限多的.每头奶牛只喜欢一种巧克力,调查显示, 有Ci头 ...
- hdu 5093 Battle ships 匈牙利 很巧妙的建图思路
//这题逼我把匈牙利学了 之前一直很勤快敲网络流 而且不以为耻反以为荣 解:首先按行扫描编号,如果在同一块中(即可以相互攻击),那么将其标为相同的数组,对列也做同样的操作. 然后扫描整张图,如果行编号 ...
- linux grep练习
1.显示/proc/meminfo文件中以不区分大小的s开头的行: 2.显示/etc/passwd中以nologin结尾的行; 3.显示/etc/inittab中以#开头,且后面跟一个或多个空白字符, ...