作业二:多级菜单

  • 三级菜单
  • 可依次进入各子菜单
  • 在各级菜单中输入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,作业二)的更多相关文章

  1. Python学习5,三级菜单实例

    _author_ = "Happyboy" data = { '北京':{ "昌平":{ "沙河":["Happyboy" ...

  2. Python学习之字典--三级菜单

    效果图: 实现代码: dic = { '人物':{ '帽子':{'前年玄铁帽'}, '武器':{'屠龙宝刀'} }, '属性':{ '力量':{35}, '敏捷':{66} }, '任务':{ '主线 ...

  3. Python学习第二天-编写三级菜单

    编写三级菜单:1. 运行程序输出第一级菜单2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单3. 菜单数据保存在文件中4. 让用户选择是否要退出5. 有返回上一级菜单的功能 # Author: z ...

  4. Python进阶实战之三级菜单

    目录 一.Python进阶实战之三级菜单 1.1 面条版 1.2 文艺青年版 一.Python进阶实战之三级菜单 打印省.市.县三级菜单 可返回上一级 可随时退出程序 1.1 面条版 menu = { ...

  5. python作业三级菜单day1(第一周)

    一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二三级菜单文 ...

  6. python第四天 三级菜单新思路

    今天是一个坎,在做三级菜单时卡住了,因为想要简洁的代码,就要用到递归函数,卡的不要不要的!不过最后在同学老师的提点帮助下,还是解决了! 2017-5-10发现之前的代码有BUG今天 修改了! 作业要求 ...

  7. day1作业二:多级菜单

        作业二:多级菜单 1.三级菜单 2.可以次选择进入各子菜单 3.所需新知识点:列表.字典 4.打印b回到上一层 5.打印q退出循环 流程图如下: readme: (1)存储三级菜单的字典;设置 ...

  8. day1作业二:多级菜单操作

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 思路: (1)首先定义好三级菜单字典: (2)提 ...

  9. day1作业二:多级菜单操作(函数实现)

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 本示例的三级菜单是一个yaml文件格式,格式如下 ...

随机推荐

  1. [汇编语言]-第九章 根据位移进行转移的jmp指令 段内短转移 段内近转移 段间转移(远转移) 转移的目的地址在指令中,在寄存器中,在内存中的jmp指令

    1- jmp为无条件转移指令,可以只修改IP, 也可以同时修改CS和IP jmp指令要给出两种信息: (1) 转移的目的地址 (2) 转移的距离(段间转移, 段内转移, 段内近转移) 2- 依据位移进 ...

  2. SQL Server 的各种查询和要申请的锁

    前期准备: 1.建表 create table T_Btree(X int primary key,Y nvarchar(4000));            create table T_Heap( ...

  3. Node.js HTTP 使用详解

    对于初学者有没有发觉在查看Node.js官方API的时候非常简单,只有几个洋文描述两下子,没了,我第一次一口气看完所以API后,对于第一个示例都有些懵,特别是参数里的request和response, ...

  4. Unix/Linux环境C编程入门教程(24) MySQL 5.7.4 for Red Hat Enterprise 7(RHEL7)的安装

    远观历史, MySQL的主要目的是为了能够在单处理器核心的商业服务器上运行.如今MySQL的一个变化用户可能不会注意到,那就是甲骨文已经开始重新架构MySQL的代码,使它大量的模块化.如软件解析器,优 ...

  5. JIRA官方:为什么要用JIRA?

    因为你有各种事务 工作中总是有各种事务要去处理,而这些事务不仅仅是代码中的Bug.这些事务充斥在你的收件箱中,各种想法散落在 Excel表格里,需求隐藏在原有的业务系统中.使用JIRA可以轻松捕捉和管 ...

  6. stl入门--reverse函数

    #include<iostream> #include<algorithm>          using namespace std; int main() {     ch ...

  7. LSH、ITQ、SKLSH图像检索实验实现(包含源码下载地址)

    原文来自我的独立blog:http://www.yuanyong.org/blog/cv/lsh-itq-sklsh-compliment 这两天寻找idea,想来思去也没想到好点的方法,于是把前段时 ...

  8. error LNK1104: 无法打开文件“libboost_thread-vc140-mt-gd-1_61.lib”

    error LNK1104: 无法打开文件“libboost_thread-vc140-mt-gd-1_61.lib” 调试->你的项目属性 配置属性->VC++目录 包含目录 D:\bo ...

  9. SharePoint 2010 用Event Receiver将文件夹自动变成approved状态 (2)

    接上篇,先贴ItemUpdated的代码: base.ItemUpdated(properties); if (properties.ListItem.FileSystemObjectType != ...

  10. SQL_SERVER日期函数详细用法

    1.一个月第一天的 Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 2.本周的星期一 Select DATEADD(wk, DATEDIFF(wk,0, ...