day1作业--三级菜单
作业概述:
写一个三级菜单
实现如下功能:
(1)可依次选择进入各子菜单
(2)在每一级按“b”都可以返回上一级,按“q"都可以退出
流程图:

readme:
简介: three_menu.py是显示三级菜单的程序主要功能: 显示一级(区域)、二级(省)、三级菜单(市、区),三级菜单再选泽可以显示市区的人口和面积(为了节省时间,随意指定的),在任意级都可以返回上一级,或者退出
三级菜单和市区的人口和面积用字典表示: China_map={ '华北':{'北京':['东城','西城','朝阳','海淀'],'河北':['保定','邯郸','唐山','海淀']}, '华东':{'上海':['虹桥','徐汇','黄埔','普陀'],'江苏':['南京','苏州','无锡','徐州']}, '华南':{'广东':['深圳','东莞','湛江','佛山'],'海南':['海口','三亚','三沙']} } city_district_info={'东城':[1000,2000],'西城':[1001,2001],'朝阳':[1002,2002],'海淀':[1003,2003],'保定':[1004,2004],'邯郸':[1005,2005], '唐山':[1006,2006],'海淀':[1007,2007],'虹桥':[1008,2008],'徐汇':[1009,2009],'黄埔':[1010,2010],'黄埔':[1011,2011],'南京':[1012,2012],'苏州':[1013,2013], '无锡':[1014,2014],'徐州':[1015,2015],'深圳':[1016,2016],'东莞':[1017,2017],'湛江':[1018,2018],'佛山':[1019,2019],'海口':[1020,2020], '三亚':[1021,2021],'三沙':[1022,2022]}
执行方法: 在cmd下进入three_menu.py文件的路径,然后直接执行python three_menu.py即可
代码:
#coding=utf-8
import sys
China_map={
'华北':{'北京':['东城','西城','朝阳','海淀'],'河北':['保定','邯郸','唐山','海淀']},
'华东':{'上海':['虹桥','徐汇','黄埔','普陀'],'江苏':['南京','苏州','无锡','徐州']},
'华南':{'广东':['深圳','东莞','湛江','佛山'],'海南':['海口','三亚','三沙']}
}
city_district_info={'东城':[1000,2000],'西城':[1001,2001],'朝阳':[1002,2002],'海淀':[1003,2003],'保定':[1004,2004],'邯郸':[1005,2005],
'唐山':[1006,2006],'海淀':[1007,2007],'虹桥':[1008,2008],'徐汇':[1009,2009],'黄埔':[1010,2010],'黄埔':[1011,2011],'南京':[1012,2012],'苏州':[1013,2013],
'无锡':[1014,2014],'徐州':[1015,2015],'深圳':[1016,2016],'东莞':[1017,2017],'湛江':[1018,2018],'佛山':[1019,2019],'海口':[1020,2020],
'三亚':[1021,2021],'三沙':[1022,2022]}
#遍历一级菜单
def one_level_menu():
error_num=1
one_level_menu_dict={}
#print('一级菜单列表:',list(China_map.keys()))
for i in range(len(list(China_map.keys()))):
one_level_menu_dict[i]=list(China_map.keys())[i]
print ('一级菜单dict:',one_level_menu_dict)
while 1:
one_menu_choose=input('请选择Region代号;q:退出系统,b:返回上级菜单')
if one_menu_choose == 'b':
print('最顶层菜单,无法返回')
elif one_menu_choose == 'q':
sys.exit()
elif one_menu_choose in (str(list(one_level_menu_dict.keys()))): #list(one_level_menu_dict.keys())取出one_level_menu_dict字典中的所有的key值形成列表
error_num=1 #输入错误后,如果再输入正确,那么错误数重新计算
two_level_menu(one_level_menu_dict,one_menu_choose) #调用二级菜单函数,显示二级菜单
elif one_menu_choose not in (str(list(one_level_menu_dict.keys()))):
print('Region代码输入错误,重新输入,第%d次错误' %error_num)
if error_num < 3:
error_num=error_num+1
else:
sys.exit()
#显示二级菜单
def two_level_menu(one_level_menu_dict,one_menu_choose):
error_num=1
two_level_menu_dict={}
Region_name=one_level_menu_dict[int(one_menu_choose)] #区域名字
print ('选择的区域的名字:',Region_name)
#print ('二级菜单list:',list(China_map[Region_name].keys()))
for i in range(len(list(China_map[Region_name].keys()))):
two_level_menu_dict[i]=list(China_map[Region_name].keys())[i]
print ('二级菜单dict:',two_level_menu_dict)
while 1:
two_menu_choose=input('请选择Province代号;q:退出系统,b:返回上级菜单')
if two_menu_choose == 'b': #输入b,退回上级菜单
#print('bbbb')
one_level_menu()
elif two_menu_choose == 'q': #输入q,退出程序
sys.exit()
elif two_menu_choose in (str(list(two_level_menu_dict.keys()))): #list(one_level_menu_dict.keys())取出one_level_menu_dict字典中的所有的key值形成列表
error_num=1 #输入错误后,如果再输入正确,那么错误数重新计算
three_level_menu(one_level_menu_dict,two_level_menu_dict,Region_name,one_menu_choose,two_menu_choose) #调用三级菜单函数,显示三级菜单
elif two_menu_choose not in (str(list(two_level_menu_dict.keys()))):
print('Province代码输入错误,重新输入,第%d次错误' %error_num)
if error_num < 3:
error_num=error_num+1
else:
sys.exit()
#显示三级菜单
def three_level_menu(one_level_menu_dict,two_level_menu_dict,Region_name,one_menu_choose,two_menu_choose):
error_num=1
three_level_menu_dict={}
Province_name=two_level_menu_dict[int(two_menu_choose)] #城市名字
print ('选择的省的名字:',Province_name)
#print ('三级菜单list:',list(China_map[Region_name][City_name]))
for i in range(len(list(China_map[Region_name][Province_name]))):
three_level_menu_dict[i]=list(China_map[Region_name][Province_name])[i]
print ('三级菜单dict:',three_level_menu_dict)
while 1:
three_menu_choose=input('请选择City-District代号;q:退出系统,b:返回上级菜单')
if three_menu_choose == 'b':
two_level_menu(one_level_menu_dict,one_menu_choose)
elif three_menu_choose == 'q':
sys.exit()
elif three_menu_choose in (str(list(three_level_menu_dict.keys()))):
display_city_distrct_info(one_level_menu_dict,two_level_menu_dict,three_level_menu_dict,Region_name,one_menu_choose,two_menu_choose,city_district_info)
elif three_menu_choose not in (str(list(three_level_menu_dict.keys()))):
print('City-District代码输入错误,重新输入,第%d次错误' %error_num)
if error_num < 3:
error_num=error_num+1
else:
sys.exit()
def display_city_distrct_info(one_level_menu_dict,two_level_menu_dict,three_level_menu_dict,Region_name,one_menu_choose,two_menu_choose,city_district_info):
error_num=1
print('美丽的%s欢迎你' %three_level_menu_dict[int(two_menu_choose)])
city_district_name=three_level_menu_dict[int(two_menu_choose)]
total_population=city_district_info[three_level_menu_dict[int(two_menu_choose)]][0]
area=city_district_info[three_level_menu_dict[int(two_menu_choose)]][1]
msg='''%s简介信息:
-----------------------
总人口:%s
总面积:%d
----------End----------''' %(city_district_name,total_population,area)
print(msg)
last_menu_choose=input('请选择代号:q:退出系统,b:返回上级菜单')
if last_menu_choose == 'q':
sys.exit()
elif last_menu_choose == 'b':
three_level_menu(one_level_menu_dict,two_level_menu_dict,Region_name,one_menu_choose,two_menu_choose)
else:
last_again_menu_choose=input('代号输入错误,请选重新输入:q:退出系统,b:返回上级菜单')
if __name__=='__main__':
one_level_menu()
day1作业--三级菜单的更多相关文章
- python作业三级菜单day1(第一周)
一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二三级菜单文 ...
- python day1 之三级菜单的正确姿势
看了几个同学有关三级菜单的实现,都是通过一级一级输出,是较为过程的实现.另外如果菜单(树形结构)更多级这样处理起来就比较麻烦了. 可以使用python强大的列表和字典,实现的更优美或简洁一些: 注:复 ...
- Python学习之编写三级菜单(Day1,作业二)
作业二:多级菜单 三级菜单 可依次进入各子菜单 在各级菜单中输入B返回上一级Q退出程序 知识点:字典的操作,while循环,for循环,if判断 思路: 1.开始,打印一级菜单让用户进行选择(可以输入 ...
- 老男孩Day1作业(二):三级菜单
作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 1)编写思路 编 ...
- python学习,day1作业:设计一个三级菜单
设计一个三级菜单,要求能够下钻,能够推出,比较笨的方法 # coding=utf-8 # Author: RyAn Bi data = { 'beijing':{ 'changping':{ 'wud ...
- 我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)
作业二:三级菜单 三级菜单 可一次进入各个子菜单 思路: 这个题看似不难,难点在于三层循环的嵌套,我的思路就是通过flag的真假来控制每一层的循环的,简单来说就是就是通过给每一层循环一个单独的布尔变量 ...
- 老男孩python学习之作业二---三级菜单
因为之前花力气完成了购物小程序的作业 现在做这个三级菜单简直是so easy!! 1.显示省级菜单 2.交互,提示用户输入要查看的省份(退出e) 2.1.用户正确输入列表中的省份 3.显示市级菜单 3 ...
- day1作业二:多级菜单操作
作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 思路: (1)首先定义好三级菜单字典: (2)提 ...
- day1作业二:多级菜单操作(函数实现)
作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 本示例的三级菜单是一个yaml文件格式,格式如下 ...
随机推荐
- 使用FlaycoBanner实现图片轮播效果(加载网络图片)
FlaycoBanner是一个开源图片轮播框架,支持android2.2及以上: git地址:https://github.com/H07000223/FlycoBanner_Master 在andr ...
- 如何开发、调试Hybrid项目-- 入门篇
前言 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发效率的要求,这个时候使用IOS&Andriod开发一个APP似乎成本有点过高了,而H5的低成本.高效率.跨平台等特性 ...
- Qt图形视图框架公开课资料
接受CSDN学院的邀请,讲一次公开课,主题是Qt图形视图框架,报名链接在这里:http://edu.csdn.net/huiyiCourse/detail/228. 内容有两部分:自定义Item和拖放 ...
- linux驱动之USB驱动程序
1. USB是主从结构的 所有的USB传输,都是从USB主机这方发起:USB设备没有"主动"通知USB主机的能力. 例子:USB鼠标滑动一下立刻产生数据,但是它没有能力通知PC机来 ...
- NLP中word2vec的CBOW模型和Skip-Gram模型
参考:tensorflow_manual_cn.pdf Page83 例子(数据集): the quick brown fox jumped over the lazy dog. (1)CBO ...
- Hyper-V安装Oracle Linux6_4 Oracle db 12c并使用rman做异机恢复
本文记录在Windows Server 2012 R2上安装Oracle Enterprise Linux 6.4以及使用RMAN进行进行异机恢复的过程. Windows服务器增加Hyper-V功能 ...
- Hadoop YARN 100-1知识点
0 YARN中实体 资源管理者(resource manager, RM) 长时间运行的守护进程,负责管理集群上资源的使用 节点管理者(node manager, NM) 长时间运行的守护进程,在集群 ...
- dede channel 增加limit(属性)功能
dede channel 标签添加 limit(属性)功能 在用dede建站的时候,往往会需要用到一些需要自定义的普通需求,今天在这里介绍channel的limit功能,有时候我们需要调用中间部分数据 ...
- fcitx error
(ERROR-2016 /build/fcitx-J2yftF/fcitx-4.2.9.1/src/lib/fcitx/ui.c:165) no usable user interface.(ERRO ...
- 关于unity中C#使用WaitForSeconds的方法
//我有一段这样的代码,我要实现3秒后执行内容,JS是这样写的 function Update () { load (); } function load (){ //等待3秒执行语句 yield W ...