README
1 # README.md #
2
3 day001-work-2
4
5 @南非波波
6
7 功能实现:多级菜单展示
8
9 流程图:
10 ![](http://i.imgur.com/VTPPhZU.jpg)
11
12 程序实现:
13
14 1.文件说明:
15 main.py:主程序入口
16 welcome.py:程序首页展示内容
17 citylist.py:程序的字典内容
18 checkinput.py:检查用户输入是否符合规定,设置二三级菜单展示函数
19 2.设置功能函数:
20 welcome.WelcomeInfo():首页函数,调用checkinput.CheckInputOne(Choose)函数,根据用户输入返回相应值或者调用相应函数
21 welcome.GoBack(Choose):返回函数,该函数最终设计目标实现多级返回,但目前只实现返回到首页
22 checkinput.CheckInputOne(Choose):函数判断用户在第一次输入的值是否异常,根据用户输入情况进行相应值返回或者调用相应函数
23 checkinput.InputIfOne(Choose):调用checkinput.ShowInfo(Area)函数展示地区下面的省份,并且多层循环、遍历字典、列表展示二三层菜单。期间调用checkinput.ChooseInputTwo(Choose)函数进行用户输入的判断,并返回True|Flase值.
24 3.主函数入口:
25 import welcome
26 #main
27 if __name__ =="__main__":
28 welcome.WelcomeInfo()
29
30 代码地址:
31
32 https://github.com/swht/projects/tree/master/day01/work-2
33
README
流程图:
程序代码:
main.py
1 #!/usr/local/env python3
2 '''
3 Author:@swht
6 '''
7 import welcome
8
9 #main
10 if __name__ =="__main__":
11 welcome.WelcomeInfo()
main.py
welcome.py
1 #!/usr/local/env python3
2 '''
3 Author:@swht
6 '''
7 import citylist
8 import checkinput
9 import sys,time
10 #登录欢迎界面
11 def WelcomeInfo():
12 for i in range(0,3):
13 Choose = input('''
14 ===================================================
15 欢迎来到中国!
16 ===================================================
17 [11]华北地区 [12]东北地区 [13]华东地区 [14]华中地区
18 [15]华南地区 [16]西南地区 [17]西北地区 [18]特别行政区
19 [19]退出
20 请选择相应指令:''').strip()
21 checkinput.CheckInputOne(Choose)
22 GoBack("地区")
23
24 #错误次数已达3,程序退出
25 def GoBack(Choose):
26 if Choose == "地区":
27 print("你的输入错误次数已达3次,系统将退出!")
28 time.sleep(1)
29 sys.exit(1)
welcome.py
citylist.py
1 #!/usr/local/env python3
2 '''
3 Author:@swht
6 '''
7
8 CityList ={
9 "华北地区":{
10 "北京市":['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区','密云县','延庆县'],
11 "天津市":['和平区', '河东区', '河西区', '南开区', '河北区', '红桥区', '塘沽区', '汉沽区', '大港区', '东丽区', '西青区', '津南区','北辰区', '武清区', '宝坻区', '宁河县', '静海县', '蓟县'],
12 "河北省":['石家庄市','秦皇岛市'],
13 "山西省":['太原市','大同市'],
14 "内蒙古自治区":['呼和浩特市','包头市']
15 },
16 "东北地区":{
17 "辽宁省":["铁岭市","阜新市","朝阳市","沈阳市"],
18 "吉林省":['长春市','吉林市','辽源市'],
19 "黑龙江省":['哈尔滨市','齐齐哈尔市']
20 },
21 "华东地区":{
22 "上海市":["浦东新区","长宁区","宝山区","青浦区"],
23 "江苏省":['南京市','徐州市'],
24 "浙江省":['杭州市','宁波市'],
25 "安徽省":['合肥市','淮南市'],
26 "福建省":['福州市','厦门市'],
27 "江西省":['南昌市','景德镇市'],
28 "山东省":["济南市","青岛市","潍坊市","德州市"]
29 },
30 "华中地区":{
31 "河南省":['郑州市','洛阳市'],
32 "湖北省":['武汉市','荆门市'],
33 "湖南省":['长沙市','株洲市']
34 },
35 "华南地区":{
36 "广东省":['广州市','深圳市'],
37 "海南省":['海口市','三亚市','五指山市', '琼海市', '儋州市', '文昌市', '万宁市', '东方市'],
38 "广西壮族自治区":['南宁市','桂林市']
39 },
40 "西南地区":{
41 "重庆市":['渝中区', '大渡口区', '江北区', '沙坪坝区', '九龙坡区', '南岸区', '北碚区', '万盛区', '双桥区', '渝北区'],
42 "四川省":['成都市','自贡市'],
43 "贵州省":['贵阳市','遵义市'],
44 "云南省":['昆明市','保山市'],
45 "西藏自治区":['拉萨市','昌都地区']
46 },
47 "西北地区":{
48 "陕西省":['西安市','宝鸡市'],
49 "甘肃省":['兰州市','天水市'],
50 "青海省":['西宁市','玉树州'],
51 "宁夏回族自治区":['银川市','石嘴山市'],
52 "新疆维吾尔族自治区":['乌鲁木齐市','克拉玛依市']
53 },
54 "特别行政区":{
55 "香港特别行政区":['中西区', '东区', '九龙城区', '观塘区', '南区', '深水埗区', '黄大仙区', '湾仔区', '油尖旺区', '离岛区', '葵青区', '北区', '西贡区', '沙田区', '屯门区', '大埔区', '荃湾区', '元朗区'],
56 "澳门特别行政区":[],
57 "台湾省":['台北市', '高雄市', '基隆市', '台中市', '台南市', '新竹市', '嘉义市']
58 }
59 }
citylist.py
checkinput.py
1 #!/usr/local/env python3
2 '''
3 Author:@swht
6 '''
7 import welcome,citylist
8 import sys,time
9
10 #一级菜单输入字段判断
11 def CheckInputOne(Choose):
12 if Choose == '':
13 print("指令不能为空,请输入正确指令!")
14 else:
15 if Choose.isdigit():
16 Choose = int(Choose)
17 if Choose >= 11 and Choose <= 19:
18 InputIfOne(Choose)
19 else:
20 print("你输入的指令已超出范围,请按照系统指令进行输入!")
21 else:
22 print("请输入正确的指令,指令为整数型数字!")
23
24 def InputIfOne(Choose):
25 if Choose == 11:
26 ShowInfo("华北地区")
27 if Choose == 12:
28 ShowInfo("东北地区")
29 if Choose == 13:
30 ShowInfo("华东地区")
31 if Choose == 14:
32 ShowInfo("华中地区")
33 if Choose == 15:
34 ShowInfo("华南地区")
35 if Choose == 16:
36 ShowInfo("华南地区")
37 if Choose == 17:
38 ShowInfo("西北地区")
39 if Choose == 18:
40 ShowInfo("特别行政区")
41 if Choose == 19:
42 print("欢迎下次再来中国!")
43 time.sleep(1)
44 sys.exit(0)
45
46 #二级、三级菜单输入字段判断
47 def ChooseInputTwo(Choose):
48 if Choose == '':
49 print("指令不能为空,请输入正确指令!")
50 else:
51 if Choose.isdigit():
52 return True
53 elif Choose == 'back' or Choose == 'Back' or Choose == 'BACK':
54 return False
55 else:
56 # print("你输入的指令已超出范围,请按照系统指令进行输入!")
57 pass
58 #二级、三级菜单显示
59 def ShowInfo(Area):
60 #显示省份
61 for i in range(0,3): #允许用户最大错误次数3次
62 print('''
63 ===================================================
64 欢迎来到%s!
65 ==================================================='''% Area)
66 # citylist.CityList[Area].keys() 获取地区里面的省份键值
67 Count = 0
68 for index,key in enumerate(citylist.CityList[Area].keys()): #python3中citylist.CityList[Area].keys()输出的是dict_keys对象
69 Count += 1
70 print("\t\t\t序号:%s\t省份:%s" % (index,key))
71 Choose1 = input("\t\t请选择相应序号进入相应省份!返回上级菜单[Back]:").strip()
72 ChooseInputTwo(Choose1)
73 if ChooseInputTwo(Choose1) == True:
74 Choose1 = int(Choose1)
75 if Choose1 >= 0 and Choose1 < Count:
76 #python3中将dict_keys转换成列表再做索引
77 #python2中dict.keys()的输出对象就是一个列表,可以直接进行索引操作
78 #KeyOne = citylist.CityList[Area].keys()[Choose1]
79 KeyOne = list(citylist.CityList[Area].keys())[Choose1] #获取省份keys
80 #显示城市
81 for i in range(0,3): #允许用户最大错误次数3次
82 Count = 0
83 print('''
84 ===================================================
85 欢迎来到%s!
86 ===================================================''' % KeyOne)
87 for index,key in enumerate(citylist.CityList[Area][KeyOne]):
88 Count += 1
89 print("\t\t\t序号:%s\t城市地区:%s" % (index,key))
90 Choose2 = input("\t\t请选择相应序号进入相应城市地区!返回上级菜单[Back]:").strip()
91 ChooseInputTwo(Choose2)
92 if ChooseInputTwo(Choose2) == True:
93 Choose2 = int(Choose2)
94 if Choose1 >= 0 and Choose2 < Count:
95 KeyTwo = citylist.CityList[Area][KeyOne][Choose2] #获取地区名称
96 print("\t\t哈哈,到头了!\t\t%s" % KeyTwo)
97 print("\t\t穿越到上一级菜单喽......")
98 time.sleep(1)
99 break
100 else:
101 print("你输入的指令不在范围内!")
102 time.sleep(1)
103 continue
104 elif ChooseInputTwo(Choose2) == False:
105 print("\t\t系统将返回上一级菜单!")
106 time.sleep(1)
107 break #跳出当前一级循环
108 else:
109 print("你是输入有误,请重新输入!")
110 time.sleep(1)
111 continue
112 print("你的输入次数已达三次,系统返回上一级菜单!")
113 else:
114 print("你输入的指令不在范围内!")
115 time.sleep(1)
116 continue #跳出当前循环
117 elif ChooseInputTwo(Choose1) == False:
118 welcome.WelcomeInfo() #首页
119 else:
120 print("你的输入有误,请重新输入!")
121 print("你的输入次数已达三次,系统将返回首页!")
122 welcome.WelcomeInfo()
checkinput.py
github更新地址:
https://github.com/swht/projects/tree/master/day01/work-2