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("输入错误请重新输入,输入任意键继续")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这个云原生开发的痛点你遇到了吗?

简介: 上云从来都不是一片坦途,在此过程中我们总会遇到一些困难和挑战,得益于云原生技术的日益成熟,这些问题一定会有相应的解法。 作者:纳海 背景 在云原生时代,国内外众多云厂商释放出强大的技术红利…

mysql安装pymyaql_python安装mysql的依赖包mysql-python操作

一般情况下,使用pip命令安装即可:[rootdthost27 ~]# pip install mysql-python但是在实际工作环境中,往往会安装失败,这是因为系统缺少mysql的相关依赖组件。所以必须先安装mysql-devel类的包,而且必须要对应好mysql客…

「技术人生」专题第1篇:什么是技术一号位?

前言 什么是技术一号位、有哪些关注点、怎么做技术一号位? 做了研发团队的技术 leader 以后,要处理的事情非常多,如果对自己扮演的角色没有一个清晰的认知,就会出现该做的事情没有做,不该做的事情投入了过多的精力&…

服务器之后加码存储,浪潮信息重磅发布新一代 G6 存储平台

作者 | 宋慧 出品 | CSDN云计算 提到浪潮,业界首先想到的是浪潮信息服务器占有的优势和市场份额。不过,其实浪潮在存储领域也持续深耕和发力中。据国际分析机构 Gartner 报告显示,2021 年第一季度,浪潮存储在全闪存存储、分布式存…

python中异常和错误是同一个概念吗_Python 错误与异常

2017-08-01 13:40:17在程序运行过程中,总会遇到各种各样的错误。有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。有的错误是用户输入造成的,比如让…

技术干货 | 轻松两步完成向 mPaaS 小程序传递启动参数

简介: 以传递 name 和 pwd 参数为例,分别介绍此场景在 Android 小程序和 iOS 小程序中的实现过程。 前言 在部分场景下,需要向小程序的默认接收页(pages/index/index)传递参数。 本文将以传递 name 和 pwd 参数为例&…

腾讯安全发布安全托管服务MSS,推动网络安全建设向服务驱动转变

近年来,随着黑产组织逐渐规模化、产业化,网络攻击态势愈发严峻;同时,由于DevOps、云原生等新技术的落地,以及IT架构的变化,企业研发和运营的模型随之改变,风险应对策略也越发复杂,越…

深入解读:获得 2021 Forrester 全球云数仓卓越表现者的阿里云数据仓库

简介: 阿里云在最新发布的 The Forrester Wave™: Cloud Data Warehouse, Q1 2021 全球云数据仓库技术评比中进入卓越表现者象限,成为国内唯一入选厂商。本文针对 Forrester 的报告,结合阿里云的以 MaxCompute 为核心的云数仓产品&#xff0c…

python文件替换一行_python自动化替换文件中每一行中的特有字符串

在工作中,有可能有一些场景,例如我要替换我txt文档中,所有行中包含test文字的的行内容,例如我们可以替换为空,或者某一个特定字符串呢?不多说,上代码。。def repalceString():lineList []file …

Azkaban业务流程如何转化为DataWorks业务流程

简介: 用户在迁移上云的时候,需要将云下的的Azkaban任务迁移上云,之前通过用户在DataWroks一步步创建对应的业务流程,其转化难度和转化时间都是一定的成本和时间,但如何能做到省时省力的方式迁移,为此本文提供了使用迁…

mysql 事务autocommit_亲身实验mysql配置中autocommit和事务的关系

话说亲身实验mysql配置中autocommit和事务的关系,是由于项目中用到的mysql事务没能回滚,我用的是InnoDB的引擎,就开始追查原因。这一查不要紧,发现网上如出一辙的说法竟也不可信,还是亲身实验最靠谱。下面更正几种常见…

深度 | 数据湖分析算力隔离技术剖析

简介: 随着越来越多的企业开始做数据湖分析,数据量的持续增加,数据分析需求也会越来越多,在一个共享的数据湖分析引擎,如何防止多租户之间的查询相互影响是一个很通用的问题,本文以阿里云DLA Presto为例&am…

续写传奇,浪潮存储凭何脱颖而出

“浪潮信息围绕智慧计算战略,构建算力、算法、数据三位一体的核心竞争力。浪潮存储的表现非常亮眼,以超过100%的市场增速高速成长,市场占有率已经位居全球前五、中国前二。浪潮发布新一代G6存储平台,同时公布存储业务目标&#xf…

mfc链表中的数据如何排序输出_java程序员面试中最容易被问到的18个算法题(附答案!)...

算法是比较复杂又基础的学科,每个学编程的人都会学习大量的算法。而根据统计,以下这18个问题是面试中最容易遇到的,本文给出了一些基本答案,供算法方向工程师或对此感兴趣的程序员参考。1)请简单解释算法是什么&#x…

深度解析PolarDB数据库并行查询技术

简介: 随着数据规模的不断扩大,用户SQL的执行时间越来越长,这不仅对数据库的优化能力提出更高的要求,并且对数据库的执行模式也提出了新的挑战。本文将介绍基于代价进行并行优化、并行执行的云数据库的并行查询引擎的关键问题和核…

python queue模块安装_Python -- Queue模块

学习契机 最近的一个项目中在使用grpc时遇到一个问题,由于client端可多达200,每个端口每10s向grpc server发送一次请求,server端接受client的请求后根据request信息更新数据库,再将数据库和配置文件的某些数据封装后返回给client。原代码的性能是0.26s/request,远远达不到…

万物互联、应用现代化、云原生新范式,华为云为数字化转型提供最优解

10月27日,华为云TechWave全球技术峰会(应用现代化)在广州举办。华为云发布“云原生2.0”新范式,并分享应用现代化、万物互联等最新理念及产品进展。 华为云CTO张宇昕发表主题演讲 华为云CTO张宇昕表示:“云原生新范式…

动态游标for循环_【【动图算法】(动态规划篇):最长回文子串

本周继续做一道动态规划类型的题目,该题是阿里一面的一道算法题。【动图算法】(动态规划篇):最长回文子串leetcode 5 题:最长回文子串https://leetcode-cn.com/problems/longest-palindromic-substring/给定一个字符串 s,找到 s 中…

企业上云如何对SLS日志审计服务进行权限控制

简介: 日志审计是信息安全审计功能的核心部分,是企业信息系统安全风险管控的重要组成部分。SLS的日志审计服务针对阿里云的多种云产品(Actiontrail、OSS、SLB、RDS、PolarDB、SAS、WAF等)提供了一站式的日志收集、存储、查询、可视…

分区取模分库分表策略:多表事务分库内闭环解决方案

简介: 当表数据超过一定量级,就需要通过分表来解决单表的性能瓶颈问题;当数据库负载超过一定水平线,就需要通过分库来解决单库的连接数、性能负载的瓶颈问题。本文将阐述在不同情况下,让不同数量级表,在同一…