引用博客地址:http://www.cnblogs.com/yuanchenqi/articles/5782764.html

作业描述:

省 市 县的三层数据通过字典 元祖 列表 保存起来
执行程序后 首先看到省级菜单
1.2,3

打印后选择哪个省
选择1后 应该把省里的市打印出来
然后用户选择某个市
把市打出来
最少要有返回上一级
除了第一级返回直接退出

看到第二级可以返回到第一级

无论在哪一层都可以退出这个程序
退出程序不要用exit,用break
用标志位来做退出

# Author:Administrator
# date: // address = [
{(, '上海市'): [{(, '上海市'): [(, '崇明区'), (, '松江区'), (, '徐汇区'), (, '静安区')]}]},
{(, '河南省'): [{(, '周口市'): [(, '太康县'), (, '淮阳县'), (, '鹿邑县')]},
{(, '郑州市'): [(, '中原区'), (, '上街区'), (, '新郑市')]}]},
{(, '江苏省'): [{(, '南京市'): [(, '玄武区'), (, '六合区'), (, '雨花台区')]},
{(, '无锡市'): [(, '宜兴市'), (, '锡山区'), (, '惠山区')]},
{(, '徐州市'): [(, '新沂市'), (, '睢宁县'), (, '铜山区')]}]}
]
exit_flag = False
# print(len(address))
while True and not exit_flag:
province_keys_code_list = []
province_keys_list = []
for item_0 in address:
for province_key in item_0:
province_keys_code_list.append(province_key[])
province_keys_list.append(province_key)
print("省份编号:{province_code},省份名称:{province_name}".format(province_code=province_key[],
province_name=province_key[]))
province_code_input = input("请输入想要查看的省份编号或输入q退出:").strip()
if province_code_input == "q":
exit_flag = True
break
elif province_code_input.isdigit() and int(province_code_input) in province_keys_code_list:
province_code_input = int(province_code_input)
province_index = province_keys_code_list.index(province_code_input)
# province_info = address[province_index] # 找到省份条目完整信息
province_key_info = province_keys_list[province_index]
city_list_info = address[province_index][province_key_info] # 找到城市列表完整信息
city_keys_code_list = []
city_keys_list = []
while True and not exit_flag:
for city_item in city_list_info:
for city_key in city_item:
city_keys_code_list.append(city_key[])
city_keys_list.append(city_key)
print("城市编号:{city_code},城市名称:{city_name}".format(city_code=city_key[], city_name=city_key[]))
city_code_input = input("请输入想要查看的城市编号或输入q退出或输入back返回上一级:").strip().lower()
if city_code_input == "q":
exit_flag = True
break
elif city_code_input == "back":
break
elif city_code_input.isdigit() and int(city_code_input) in city_keys_code_list:
while True:
city_code_input = int(city_code_input)
city_index = city_keys_code_list.index(city_code_input)
city_key_info = city_keys_list[city_index]
area_list_info = city_list_info[city_index][city_key_info]
for area_item in area_list_info:
print("地区编号:{are_code},地区名称:{area_name}".format(are_code=area_item[], area_name=area_item[]))
area_code_input = input("请输入想要查看的城市编号或输入q退出或输入back返回上一级:").strip().lower()
if area_code_input == "back":
break
elif area_code_input == "q":
exit_flag = True
break
else:
print("输入有误,请重新输入")
else:
print("输入无法匹配")
else:
print("输入无法匹配。")
if exit_flag:
print("您已退出。")

python之02数据类型学习-作业练习2的更多相关文章

  1. python之02数据类型学习-作业练习

    题目: 购物车程序 salary = 5000 1. iphone6s 5800 2. mac book 9000 3. coffee 32 4. python book 80 5. bicyle 1 ...

  2. python之02数据类型学习

    参考链接:http://www.cnblogs.com/yuanchenqi/articles/5782764.html python的数据类型有:Number.Boolean.String .Lis ...

  3. python学习第九讲,python中的数据类型,字符串的使用与介绍

    目录 python学习第九讲,python中的数据类型,字符串的使用与介绍 一丶字符串 1.字符串的定义 2.字符串的常见操作 3.字符串操作 len count index操作 4.判断空白字符,判 ...

  4. python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍

    目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...

  5. python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍

    目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...

  6. python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍

    目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...

  7. python基本数据类型学习

    python是极其简洁的一门高级语言,在python里面没有真正意义上的常量,只是用大写的标定表示常量(python中的常量是可以修改的),单行注释用#开始,.并且python不用定义数据类型,因为p ...

  8. Python学习之路【第二篇】-pyc简介、Python常用的数据类型及其用法和常用运算符

    1.pyc简介 python程序在运行时也有编译过程,编译后会产生.pyc文件.这是一种由python虚拟机执行的二进制文件(字节码),用于保存内存中PyCodeObject,以便加快程序的加载运行. ...

  9. python学习笔记03:python的核心数据类型

    从根本上讲,Python是一种面向对象的语言.它的类模块支持多态,操作符重载和多重继承等高级概念,并且以Python特有的简洁的语法和类型,OOP十分易于使用.Python的语法简单,容易上手. Py ...

随机推荐

  1. Mysql: 强制走索引:mysql between 日期索引 索引问题-日期索引使用

    Mysql: mysql between 日期索引 索引问题-日期索引使用 表结构: dep_date dep arr 联合索引: ind_coll_date_route  (dep_date ,de ...

  2. Php处理大文件-分割和合并

    分割文件 /* * 分割文件 * 默认大小 2M=10485760/5 */ function file_split($file,$block_size=10485760/5) { $block_in ...

  3. 关于C++多态的理解

    多态,即多种形态.对于具有继承关系的一类对象,子类表现出了父类的某些特性,但是表现的不一样,这就是多态的现实体现.例如动物可以发声,但是狗是旺旺,狗是动物的一种,但是表现了不同的叫的特点,这就是多态. ...

  4. codeforces 652A A. Gabriel and Caterpillar(水题)

    题目链接: A. Gabriel and Caterpillar time limit per test 1 second memory limit per test 256 megabytes in ...

  5. 2017-2018-1 20179203《Linux内核原理与分析》第二周作业

    攥写人:李鹏举 学号:20179203 ( 原创作品转载请注明出处) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/US ...

  6. 每天一个linux命令(7):rmdir命令

    版权声明更新:2017-05-11博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的rmdir命令. ...

  7. bzoj 2084: Antisymmetry 回文自动机

    题目: Description 对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作"反对称"字符串.比如00001111和010101就是反对称的 ...

  8. HDOJ(1069)最长下降子序列

    每个箱子可有3种叠加方式,所以有3*n个箱子.将箱子按长度由大到小排序,有求箱子按宽度的最长下降子序列的高度之和即可. #include<cstdio> #include<algor ...

  9. nginx实现带参数目录域名重定向二级域名方法

    本文章介绍了关于nginx实现带参数目录域名重定向二级域名方法,有需要学习的朋友可参考一下. 下面的代码是基于nginx的子目录301到其他域名(URL)的规则.作用是例如访问http://www.p ...

  10. kafka之一:Windows上搭建Kafka运行环境

    搭建环境 1. 安装JDK 1.1 安装文件:http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-213315 ...