python入门之玩转列表我的菜单_我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)...
#!/usr/bin/env python3#coding:utf-8
'''Created on: 2015年12月30日
@author: 张晓宇
Email: 61411916@qq.com
Version: 1.0
Description: 三层菜单
1、菜单一共三级即:省,市,区县
2、每一级菜单输入的如果输入的是菜单里的选项则进入下级菜单
3、第1级菜单输入q退出系统
4、第2、3级菜单输入q退出系统,输入b返回上级菜单
5、三级菜单全部正确打印最后的全部选择结果,否则继续循环该机菜单
Help:'''
if __name__ == '__main__':'''@parameters:
provinces:定义省一级菜单,格式为字典,{"菜单序号":"省名称", ...}
citys:定义省一级菜单,格式为二级嵌套字典{"省名称":{"菜单序号":"市名称"}, ...}
area:定义区县一级菜单,格式为二级嵌套字典{"市名称":{"菜单序号":"区县名称"}, ...}
app_info:系统信息,主要用于显示'''provinces={"1":"北京","2":"上海","3":"河北省",
}
citys={"北京":{"1":"北京市区","2":"北京市郊区"},"上海":{"1":"上海市区"},"河北省":{"1":"石家庄市", "2":"秦皇岛市", "3":"保定市"}
}
areas={"北京市区":{"1":"东城区", "2":"西城区", "3":"海淀区", "4":"朝阳区", "5":"丰台区", "6":"石景山区"},"北京市郊区":{ "1":"通州区", "2":"顺义区", "3":"房山区", "4":"大兴区", "5":"昌平区", "6":"怀柔区", "7":"平谷区", "8":"门头沟区", "9":"密云县", "10":"延庆县"},"上海市区":{"1":"黄浦区", "2":"卢湾区", "3":"徐汇区", "4":"长宁区", "6":"静安区", "7":"普陀区", "8":"闸北区", "9":"虹口区", "11":"杨浦区", "12":"宝山区"},"石家庄市":{"1":"鹿泉", "2":"正定", "3":"藁城", "4":"栾城", "5":"高邑", "6":"新乐", "7":"辛集", "8":"赵县", "9":"深泽", "10":"晋州"},"保定市":{"1":"南市区", "2":"北市区", "3":"新市区", "4":"白沟新城区", "5":"顺平县"},"秦皇岛市":{"1":"海港区", "2":"山海关区", "3":"北戴河区", "4":"抚宁区", "5":"昌黎县", "6":"卢龙县", "7":"青龙满族自治县"}
}
app_info= '''+-----------------------------------+
| Welcome to 65brother system |
| Version: 1.0 |
| Author: zhangxiaoyu |
+-----------------------------------+'''
#初始化菜单列表,主要是做了一次排序,解决字典无序的问题,这里的d[0]表示对key做排序,int表示先转换成整数,也就是按照整数的顺序进行排序否则如果序号超过10,会出现1后面的是10而不是2
province_list = sorted(provinces.items(), key = lambdad:int(d[0]))#初始化省一级菜单循环开关
province_flag =True#省一级菜单循环
whileprovince_flag:#初始化市一级菜单的循环开关
city_flag =Trueprint(app_info)#打印当前用户的位置
print("home>")#打印省一级菜单
print("+-----------------------------------+")for province_item inprovince_list:print("%s、%s" %province_item)print("+-----------------------------------+")#获取用户输入的选项
province = input("请输入你的省份(输入'q'退出系统):").strip()#判断用户的输入
if province == 'q':#如果用户输入的是q关闭省一级菜单循环开关,也就是退出系统
province_flag =Falseelif province inprovinces:#如果输入的是菜单的序号执行
#获取省的名称
province_name =provinces[province]#初始化市一级菜单,同省一样对key进行排序
city_list = sorted(citys[province_name].items(), key = lambdad:int(d[0]))#市一级菜单循环
whilecity_flag:#打印用户位置
print("home>%s>" %province_name)#打印市一级菜单
print("+-----------------------------------+")for city_item incity_list:print("%s、%s" %city_item)print("+-----------------------------------+")#获取用户输入
city = input("请输入你的城市(输入'q'退出系统,输入'b'返回上一级菜单):").strip()#判断用户输入
if city == 'q':#如果输入q关闭省一级和市一级循环开关,也就是退出系统
province_flag =False
city_flag=Falseelif city == 'b':#如果用户输入的是b,关闭市一级循环开关,继续省一级循环
city_flag =Falseelif city incitys[province_name]:#如果用户输入的是正确的菜单项
#初始化区县一级循环开关
area_flag =True#获取市的名称
city_name =citys[province_name][city]#初始户区县菜单
area_list = sorted(areas[city_name].items(), key = lambdad:int(d[0]))#区县一级循环
whilearea_flag:#打印用户位置
print("home>%s>%s>" %(province_name,city_name))#打印区县菜单
print("+-----------------------------------+")for area_item inarea_list:print("%s、%s" %area_item)print("+-----------------------------------+")#获取用户输入
area = input("请输入你的区/县(输入'q'退出系统,输入'b'返回上一级菜单):").strip()#判断用户输入
if area == 'q':#如果是q,关闭省、市、区县一级循环开关,也就是退出系统
area_flag =False
city_flag=False
province_flag=Falseelif area == 'b':#如果是b,关闭县一级循环开关,继续市循环
area_flag =Falseelif area inareas[city_name]:#如果输入正确
#获取区县名称
area_name =areas[city_name][area]#输出完整的三级菜单选择信息
input('您选择的是%s,%s,%s。选择任意键退出系统' %(province_name, city_name, area_name))#关闭省、市、区县循环开关,退出系统
area_flag =False
city_flag=False
province_flag=Falseelse:#如果区县选项输入错误提示错误
input("输入错误请重新输入,输入任意键继续")else:#如果市选项输入错误提示错误
input("输入错误请重新输入,输入任意键继续")else:#如果省选项输入错误提示错误
input("输入错误请重新输入,输入任意键继续")
python入门之玩转列表我的菜单_我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)...相关推荐
- 我的Python成长之路---第一天---Python基础(5)---2015年12月26日(雾霾)
六.流程控制 与C语言不通的事Python的流程控制的代码块不是用{}花括号表示的,而是用强制缩进来,而且缩进必须一致,官方推荐是使用4个空格,不建议使用使用tab(制表符)做缩进,一是不同的系统ta ...
- Python入门之玩转列表-第4关:列表切片:你的菜单和我的菜单
任务描述 我们在前三关中学习了如何处理单个列表元素和所有列表元素,在这一关中我们还将学习如何处理部分列表元素--Python中称为切片. 例如,当我们去餐馆吃饭点菜时,你的菜单和我的菜单有些时候是一模 ...
- python入门之玩转列表我的菜单_python入门到放弃(五)-基本数据类型之list列表
1.概述列表是python的基本数据类型之一,是一个可变的数据类型,用[]方括号表示,每一项元素使用逗号隔开,可以装大量的数据 #先来看看list列表的源码写了什么,方法:按ctrl+鼠标左键点lis ...
- 12月26日二周二次【Python基础语法】
2.2 流程控制-for序列 2.3 流程控制-for字典 2.2 流程控制-for序列 循环 循环是一个结构, 导致程序要重复一定的次数 条件循环也是如此, 当条件变为假, 循环结束 for 循环 ...
- python生成20个随机数列表偶数下标排列_编写程序,生成一个包含 20 个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片。)_学小易找答案...
[简答题]编写程序,输出所有由 1 . 2 . 3 . 4 这 4 个数字组成的素数,并且在每个素数中每个数字只使用 1 次. [填空题]表达式 [x for x in [1,2,3,4,5] if ...
- Python学习_2015年12月14日
2015年12月14日 1.Python代码中有成片代码需要加缩进?(比如少加了一个if,后面的代码块都要缩进) 解决方法:选择要缩进的一片代码,然后按Tab,所有行一起缩进.如果要取消缩进,Shif ...
- 盘丝洞服务器维护,5月26日维护公告 多项玩法更新
亲爱的玩家朋友: 为保证服务器的运行稳定和服务质量,<梦幻西游2>所有服务器将于2015年5月26日上午8:00停机,进行每周例行的维护工作.预计维护时间为上午8:00-9:00.如果在预 ...
- Python学习——复习5次课(12月2日)
任务: 复习5次课(12月2日) 1.8 递归列出目录里的文件 1.9 匿名函数 2.0-2.4 内建函数 笔记: 递归的注意事项 必须有最后的默认结果 if n == 0 递归参数必须向默认结果收敛 ...
- 12月17日云栖精选夜读 | 用PrettyPrinter,让Python输出更漂亮,你值得拥有
PrettyPrinter是Python 3.6 及以上版本中的一个功能强大.支持语法高亮.描述性的美化打印包.它使用了改进的Wadler-Leijen布局算法,和Haskell打印美化库中的pret ...
最新文章
- 验证码识别,发票编号识别(转)
- 通过eclipse调试MapReduce任务
- 【Linux 内核】调度器 ⑤ ( put_prev_task、set_next_task 函数 | select_task_rq 函数 | migrate_task_rq 函数 )
- libmemcached安装报错
- 开发者必备Docker命令
- java培训第一阶段测试总结,达内学员Java培训阶段总结:反躬自省,愈渐完美
- 采购订单接收备注为必输项
- [C++11]通过using定义基础类型和函数指针别名
- Java-异常01 Error和Exception
- HPU 1476: 括号括号
- Illustrator 教程,如何在 Illustrator 中添加文本段落?
- CAD建模软件:BricsCAD 22 for Mac
- android电商组件化分配,android电商组件化设计(含源码):MVP+dagger+组件化
- 使用GoKart对Go代码进行静态安全分析
- [转]将H264与AAC打包Ipad可播放的TS流的总结
- 吴文俊人工智能科学技术奖十周年颁奖盛典揭晓,100个项目成果摘得中国智能科学技术奖励最高殊荣
- excel 公式 单引号 concat_Recovery for Excel(Excel文件修复工具)下载 v6.0官方版-
- 计算机硬盘 半导体存储器 相关概念
- 1553B为什么要加耦合器?
- vx开发|JSON配置文件
热门文章
- 这篇 Linux 总结得很棒啊!
- 告诉你,为什么要娶物理系御姐?
- 单身狗救星!电子科大校长为理工科男脱单提建议
- 26岁的她,成为深圳大学史上最年轻正教授!
- 解析得了数学,写得了诗书,这是个有趣的灵魂
- On the coexistence of transport protocols in data centers
- sparkStreaming连接kafka整合hbase和redis
- SimpleDateFormat(线程不安全)与DateTimeFormatter(线程安全)
- 阿里科学家再获世界级荣誉,平头哥首席科学家谢源当选AAASFellow
- 浅析基于 Serverless 的前后端一体化框架