README

  

 # README.md #

 day001-work-2

         @南非波波

 功能实现:多级菜单展示

 流程图:
![](http://i.imgur.com/VTPPhZU.jpg) 程序实现: 1.文件说明:
main.py:主程序入口
welcome.py:程序首页展示内容
citylist.py:程序的字典内容
checkinput.py:检查用户输入是否符合规定,设置二三级菜单展示函数
2.设置功能函数:
welcome.WelcomeInfo():首页函数,调用checkinput.CheckInputOne(Choose)函数,根据用户输入返回相应值或者调用相应函数
welcome.GoBack(Choose):返回函数,该函数最终设计目标实现多级返回,但目前只实现返回到首页
checkinput.CheckInputOne(Choose):函数判断用户在第一次输入的值是否异常,根据用户输入情况进行相应值返回或者调用相应函数
checkinput.InputIfOne(Choose):调用checkinput.ShowInfo(Area)函数展示地区下面的省份,并且多层循环、遍历字典、列表展示二三层菜单。期间调用checkinput.ChooseInputTwo(Choose)函数进行用户输入的判断,并返回True|Flase值.
3.主函数入口:
import welcome
#main
if __name__ =="__main__":
welcome.WelcomeInfo() 代码地址: https://github.com/swht/projects/tree/master/day01/work-2 博客地址: http://www.cnblogs.com/songqingbo/p/5091830.html

README

流程图:

  

程序代码:

main.py

  

 #!/usr/local/env python3
'''
Author:@swht
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import welcome #main
if __name__ =="__main__":
welcome.WelcomeInfo()

main.py

welcome.py

  

 #!/usr/local/env python3
'''
Author:@swht
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import citylist
import checkinput
import sys,time
#登录欢迎界面
def WelcomeInfo():
for i in range(0,3):
Choose = input('''
===================================================
欢迎来到中国!
===================================================
[11]华北地区 [12]东北地区 [13]华东地区 [14]华中地区
[15]华南地区 [16]西南地区 [17]西北地区 [18]特别行政区
[19]退出
请选择相应指令:''').strip()
checkinput.CheckInputOne(Choose)
GoBack("地区") #错误次数已达3,程序退出
def GoBack(Choose):
if Choose == "地区":
print("你的输入错误次数已达3次,系统将退出!")
time.sleep(1)
sys.exit(1)

welcome.py

citylist.py

  

 #!/usr/local/env python3
'''
Author:@swht
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
''' CityList ={
"华北地区":{
"北京市":['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区','密云县','延庆县'],
"天津市":['和平区', '河东区', '河西区', '南开区', '河北区', '红桥区', '塘沽区', '汉沽区', '大港区', '东丽区', '西青区', '津南区','北辰区', '武清区', '宝坻区', '宁河县', '静海县', '蓟县'],
"河北省":['石家庄市','秦皇岛市'],
"山西省":['太原市','大同市'],
"内蒙古自治区":['呼和浩特市','包头市']
},
"东北地区":{
"辽宁省":["铁岭市","阜新市","朝阳市","沈阳市"],
"吉林省":['长春市','吉林市','辽源市'],
"黑龙江省":['哈尔滨市','齐齐哈尔市']
},
"华东地区":{
"上海市":["浦东新区","长宁区","宝山区","青浦区"],
"江苏省":['南京市','徐州市'],
"浙江省":['杭州市','宁波市'],
"安徽省":['合肥市','淮南市'],
"福建省":['福州市','厦门市'],
"江西省":['南昌市','景德镇市'],
"山东省":["济南市","青岛市","潍坊市","德州市"]
},
"华中地区":{
"河南省":['郑州市','洛阳市'],
"湖北省":['武汉市','荆门市'],
"湖南省":['长沙市','株洲市']
},
"华南地区":{
"广东省":['广州市','深圳市'],
"海南省":['海口市','三亚市','五指山市', '琼海市', '儋州市', '文昌市', '万宁市', '东方市'],
"广西壮族自治区":['南宁市','桂林市']
},
"西南地区":{
"重庆市":['渝中区', '大渡口区', '江北区', '沙坪坝区', '九龙坡区', '南岸区', '北碚区', '万盛区', '双桥区', '渝北区'],
"四川省":['成都市','自贡市'],
"贵州省":['贵阳市','遵义市'],
"云南省":['昆明市','保山市'],
"西藏自治区":['拉萨市','昌都地区']
},
"西北地区":{
"陕西省":['西安市','宝鸡市'],
"甘肃省":['兰州市','天水市'],
"青海省":['西宁市','玉树州'],
"宁夏回族自治区":['银川市','石嘴山市'],
"新疆维吾尔自治区":['乌鲁木齐市','克拉玛依市']
},
"特别行政区":{
"香港特别行政区":['中西区', '东区', '九龙城区', '观塘区', '南区', '深水埗区', '黄大仙区', '湾仔区', '油尖旺区', '离岛区', '葵青区', '北区', '西贡区', '沙田区', '屯门区', '大埔区', '荃湾区', '元朗区'],
"澳门特别行政区":[],
"台湾省":['台北市', '高雄市', '基隆市', '台中市', '台南市', '新竹市', '嘉义市']
}
}

citylist.py

checkinput.py

  

 #!/usr/local/env python3
'''
Author:@swht
Blog:http://www.cnblogs.com/songqingbo/
E-mail:qingbo.song@gmail.com
'''
import welcome,citylist
import sys,time #一级菜单输入字段判断
def CheckInputOne(Choose):
if Choose == '':
print("指令不能为空,请输入正确指令!")
else:
if Choose.isdigit():
Choose = int(Choose)
if Choose >= 11 and Choose <= 19:
InputIfOne(Choose)
else:
print("你输入的指令已超出范围,请按照系统指令进行输入!")
else:
print("请输入正确的指令,指令为整数型数字!") def InputIfOne(Choose):
if Choose == 11:
ShowInfo("华北地区")
if Choose == 12:
ShowInfo("东北地区")
if Choose == 13:
ShowInfo("华东地区")
if Choose == 14:
ShowInfo("华中地区")
if Choose == 15:
ShowInfo("华南地区")
if Choose == 16:
ShowInfo("华南地区")
if Choose == 17:
ShowInfo("西北地区")
if Choose == 18:
ShowInfo("特别行政区")
if Choose == 19:
print("欢迎下次再来中国!")
time.sleep(1)
sys.exit(0) #二级、三级菜单输入字段判断
def ChooseInputTwo(Choose):
if Choose == '':
print("指令不能为空,请输入正确指令!")
else:
if Choose.isdigit():
return True
elif Choose == 'back' or Choose == 'Back' or Choose == 'BACK':
return False
else:
# print("你输入的指令已超出范围,请按照系统指令进行输入!")
pass
#二级、三级菜单显示
def ShowInfo(Area):
#显示省份
for i in range(0,3): #允许用户最大错误次数3次
print('''
===================================================
欢迎来到%s!
==================================================='''% Area)
# citylist.CityList[Area].keys() 获取地区里面的省份键值
Count = 0
for index,key in enumerate(citylist.CityList[Area].keys()): #python3中citylist.CityList[Area].keys()输出的是dict_keys对象
Count += 1
print("\t\t\t序号:%s\t省份:%s" % (index,key))
Choose1 = input("\t\t请选择相应序号进入相应省份!返回上级菜单[Back]:").strip()
ChooseInputTwo(Choose1)
if ChooseInputTwo(Choose1) == True:
Choose1 = int(Choose1)
if Choose1 >= 0 and Choose1 < Count:
#python3中将dict_keys转换成列表再做索引
#python2中dict.keys()的输出对象就是一个列表,可以直接进行索引操作
#KeyOne = citylist.CityList[Area].keys()[Choose1]
KeyOne = list(citylist.CityList[Area].keys())[Choose1] #获取省份keys
#显示城市
for i in range(0,3): #允许用户最大错误次数3次
Count = 0
print('''
===================================================
欢迎来到%s!
===================================================''' % KeyOne)
for index,key in enumerate(citylist.CityList[Area][KeyOne]):
Count += 1
print("\t\t\t序号:%s\t城市地区:%s" % (index,key))
Choose2 = input("\t\t请选择相应序号进入相应城市地区!返回上级菜单[Back]:").strip()
ChooseInputTwo(Choose2)
if ChooseInputTwo(Choose2) == True:
Choose2 = int(Choose2)
if Choose1 >= 0 and Choose2 < Count:
KeyTwo = citylist.CityList[Area][KeyOne][Choose2] #获取地区名称
print("\t\t哈哈,到头了!\t\t%s" % KeyTwo)
print("\t\t穿越到上一级菜单喽......")
time.sleep(1)
break
else:
print("你输入的指令不在范围内!")
time.sleep(1)
continue
elif ChooseInputTwo(Choose2) == False:
print("\t\t系统将返回上一级菜单!")
time.sleep(1)
break #跳出当前一级循环
else:
print("你是输入有误,请重新输入!")
time.sleep(1)
continue
print("你的输入次数已达三次,系统返回上一级菜单!")
else:
print("你输入的指令不在范围内!")
time.sleep(1)
continue #跳出当前循环
elif ChooseInputTwo(Choose1) == False:
welcome.WelcomeInfo() #首页
else:
print("你的输入有误,请重新输入!")
print("你的输入次数已达三次,系统将返回首页!")
welcome.WelcomeInfo()

checkinput.py

github更新地址:

  https://github.com/swht/projects/tree/master/day01/work-2

最新文章

  1. 使用Spring Sleuth和Zipkin跟踪微服务
  2. Linux运维初级、中级、高级
  3. [经典php视频]构建正则表达式解析网页中的图像标记&lt;img&gt;
  4. 【PHP设计模式 02_JieKou.php】面向接口开发
  5. 通用权限管理系统接口文档V4.2 版本之消息接口介绍
  6. 团队项目之Sprint计划会议
  7. 分享: 利用Readability解决网页正文提取问题
  8. c#基础精华01(强调代码规范,虚方法,抽象方法,接口)
  9. VS2010中水晶报表应用及实例
  10. 查询linux发行版本号方法总结
  11. Air Raid(最小路径覆盖)
  12. Ello讲述Haar人脸检测:易懂、很详细、值得围观
  13. WebService学习--(三)使用JDK开发WebService
  14. Springboot整合Elastic-Job
  15. git配置代理
  16. Github被微软收购,这里整理了16个替代品
  17. 快速排序 [Qsort]
  18. ES6 Set &amp; Map
  19. hdu1301 Jungle Roads 最小生成树
  20. (转)sqlite3生成lib遇到的问题

热门文章

  1. NATS_08:NATS客户端Go语言手动编写
  2. 开始 Dojo 开发
  3. group by实现原理及其作用
  4. python---基础知识回顾(十)进程和线程(多线程)
  5. 逻辑控制之While循环控制器(While Controller)
  6. 织梦dedecms 模板文件不存在,无法解析文档!
  7. plsql developer导入数据库
  8. spring——IOC容器BeanFactory和ApplicationContext对比
  9. [问题]SqlServer创建数据库出错
  10. 一个简单的ns2实验全过程