# -*- coding: utf-8 -*-
"""
Created on Fri Jul 29 09:43:38 2016

@author: yinggang
"""
'''制作一个三级目录,利用列表和字典满足以下功能:
1 选择主目录后弹出下级菜单继续选择
2 在任一菜单下 按b返回,按终止选择
'''

'''第一个比较长的代码,第一个博客。wish you sttruggle for your dreamming life!'''

 # -*- coding: utf-8 -*-
"""
Created on Fri Jul 29 09:43:38 2016 @author: yinggang
"""
'''制作一个三级目录,利用列表和字典满足以下功能:
1 选择主目录后弹出下级菜单继续选择
2 在任一菜单下 按b返回,按终止选择
'''
#一级菜单,省份
province = ['陕西省','甘肃省','湖南省'] #各个省份的城市,二级菜单目录
shanxi_province = ['西安市','咸阳市','宝鸡市','榆林市']
gansu_province = ['兰州市','武威市','酒泉市']
hunan_province = ['长沙市','郴州市']
#关联省-市
city = {'陕西省':shanxi_province,'甘肃省':gansu_province,'湖南省':hunan_province} #各个城市的分区,依次为西安 咸阳 宝鸡 榆林 兰州 武威 酒泉 长沙 郴州
area_xi_an = ['未央区','莲湖区']
area_xian_yang = ['实验中学','武功县']
area_bao_ji = ['宝鸡中学']
area_yu_lin = ['市区','米脂县','榆林镇']
area_lan_zhou = ['贴','胡']
area_wu_wei = ['小雨','xiaoyu']
area_jiu_quan = ['酒泉市','玉门市']
area_chang_sha = ['岳麓区','金沙']
area_chen_zhou = ['1区','2区'] #将市-区关联起来
area = {'西安市':area_xi_an,'咸阳市':area_xian_yang,'宝鸡市':area_bao_ji,'榆林市':area_yu_lin,'兰州市':area_lan_zhou,'武威市':area_wu_wei,'酒泉市':area_jiu_quan,'长沙市':area_chang_sha,'郴州市':area_chen_zhou} #定义一个循环函数,方便跳出 #定义一个break——flag变量,来直接跳出多层循环
def loop():
print('你已经退出')
break_flag = False
while True:
if break_flag:
break
print(province)
province_choice = input('输入123,选择相应省份.q直接退出该应用,b返回上级目录\n')
if province_choice == 'q' or province_choice == 'b':
loop()
break
while True:
#显示二级菜单,并让用户选择
city_xianshi = city[province[int(province_choice)-1]]
if break_flag:
break
print(city_xianshi)
city_choice = input('输入1234,对应相应城市,q直接退出该应用,b返回上级目录\n')
if city_choice == 'b':
break
if city_choice == 'q':
loop()
break_flag = True
break
area_xianshi = area[city_xianshi[int(city_choice)-1]]
print(area_xianshi)
while True:
#选择区
area_choice = input('输入1234,对应相应区或县,q直接退出该应用,b返回上级目录\n')
if area_choice == 'b':
break
elif area_choice == 'q':
break_flag = True
loop()
break
else:
print('your home is %s %s %s'%(province[int(province_choice)-1],city_xianshi[int(city_choice)-1],area_xianshi[int(area_choice)-1]))
break_flag = True
loop()
break

用python选择及显示三级目录,可返回上层目录以及随时跳出。的更多相关文章

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

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

  2. PHP遍历目录返回统计目录大小实例

    分享一个 PHP遍历目录并返回统计目录大小的方法.代码: <?php $dirname = "test1"; //mkdir($dirname); //遍历一层目录 func ...

  3. Ubuntu下安装Python3.6并在终端输入Python就能显示Python3.6

      Ubuntu17.04自带Python2.7与Python3.5.3的版本,由于Python2与Python3有着一些差距可能需要安装更新Python3的版本,并且切换默认的Python解释器. ...

  4. Apache显示目录列表及icons目录的问题

    今天想部署下开源项目pig,发现它的mysql需要5.7.8 +,为了能支持多个版本并且可以方便切换,所以选择了phpstudy_pro 刚开始Apache不支持目录访问 修改配置 <Virtu ...

  5. python实现随机复制若干个文件到新目录

    python实现随机复制若干个文件到新目录 1说明 1.1 目的 随机选择一个文件下的若干个文件,并将文件复制到新文件夹下 1.2 要求 需要将random_select_and_copy_file. ...

  6. python matplotlib 中文显示参数设置

    python matplotlib 中文显示参数设置 方法一:每次编写代码时进行参数设置 #coding:utf-8import matplotlib.pyplot as pltplt.rcParam ...

  7. [Python笔记][第三章Python选择与循环]

    1月28日学习 Python选择与循环 选择结构 多分枝选择结构 if 表达式 1: 语句块 1 elif 表达式 2: 语句块 2 elif 表达式 3: 语句块 3 ... else : 语句块 ...

  8. Android 基础一 TextView,Style样式,Activity 传值,选择CheckBox 显示密码

    1.修改TextView字体 mTextView = (TextView) findViewById(R.id.textview1); mTextView.setText("I am her ...

  9. python matplotlib 中文显示乱码设置

    python matplotlib 中文显示乱码设置 原因:是matplotlib库中没有中文字体.1 解决方案:1.进入C:\Anaconda64\Lib\site-packages\matplot ...

随机推荐

  1. 挣值管理不是搞数字游戏(3)——进阶指标:CV、SV、CPI、SPI、EAC

    摘要: 要考PMP(Project Management Professional ),挣值管理是必考的知识.软件项目有很大的特殊性,不少人认为挣值管理不太适用于软件项目.挣值管理相关资料也比较超多, ...

  2. 并查集hdu1232

    Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道 ...

  3. 【Jsoup爬取网页内容】

    思路:根据给定URL分析其源码,得到所需的网页内容的位置,制定规则采集或下载之 采集的图片和文字示例: tags: tag:brazil tag:dog tag:pet tag:pointyfaced ...

  4. Android中的FrameLayout帧布局

    帧布局由FrameLayout所代表,FrameLayout直接继承了ViewGoup组件. 帧布局容器为每一个增加当中的组件创建一个空白的区域(称为一个帧),每一个子组件占领一帧,这些帧都会依据gr ...

  5. Qt 学习之路 2(79):QML 组件

    前面我们简单介绍了几种 QML 的基本元素.QML 可以由这些基本元素组合成一个复杂的元素,方便以后我们的重用.这种组合元素就被称为组件.组件就是一种可重用的元素.QML 提供了很多方法来创建组件.不 ...

  6. SqlLite 简明教程

    SQL DML 和 DDL        可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL).         注:"--"双减号为行注释     ...

  7. xml写代码

    #include <QDomDocument> #include <QtGui> int main(int argc, char *argv[]) { QApplication ...

  8. java获取当前方法

    1.获取当前方法堆栈,我们一般用 StackTraceElement[] stes = Thread.currentThread().getStackTrace(); 想要获取当前方法,切记不够灵活, ...

  9. [转] 函数编程之闭包漫谈(Closure)

    在函数编程中经常用到闭包.闭包是什么,它是怎么产生的及用来解决什么问题呢.给出字面的定义 先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境).这个从字面上很难理解,特别对于一 ...

  10. Android中多线程下载列表的封装实现(含进度反馈)

    来源:http://blog.csdn.net/u011638883/article/details/17347015 实现了一下Android中的文件多线程下载模块,支持自定义线程数.断点续传.下载 ...