python实现三级菜单
一、要求: 1、一开始打印出所有省份和提示
2、用户输入省份以此查询城市
3、在按照输出的城市名提示用户输入,最后输出用户所查询的区县名
4、随时输入“back”可以返回上一级菜单
5、输入“Q”可以结束整个程序
6、若输入的内容无效则重新输入
二、流程图:
三、步骤:
1、先将所需的数据存储。(利用字典和列表的嵌套)
2、获取到所有的省份名
3、获取到所有的城市名
4、判断用户输入是否有效,并执行相应功能
四、代码如下
import os region = { '山东' : { '青岛' : ['四方','黄岛','崂山','李沧','城阳'], '济南' : ['历城','槐荫','高新','长青','章丘'], '烟台' : ['龙口','莱山','牟平','蓬莱','招远'] }, '江苏' : { '苏州' : ['沧浪','相城','平江','吴中','昆山'], '南京' : ['白下','秦淮','浦口','栖霞','江宁'], '无锡' : ['崇安','南长','北塘','锡山','江阴'] }, '浙江' : { '杭州' : ['西湖','江干','下城','上城','滨江'], '宁波' : ['海曙','江东','江北','镇海','余姚'], '温州' : ['鹿城','龙湾','乐清','瑞安','永嘉'] }, '安徽' : { '合肥' : ['蜀山','庐阳','包河','经开','新站'], '芜湖' : ['镜湖','鸠江','无为','三山','南陵'], '蚌埠' : ['蚌山','龙子湖','淮上','怀远','固镇'] }, '广东' : { '深圳' : ['罗湖','福田','南山','宝安','布吉'], '广州' : ['天河','珠海','越秀','白云','黄埔'], '东莞' : ['莞城','长安','虎门','万江','大朗'] } } print("'back'--返回上一级 'Q'--结束程序") #获取省份列表 province_list = list(region.keys()) print(province_list) #获取城市列表 city_list = [] for i in range(province_list.__len__()): tem = list(region[province_list[i]].keys()) city_list.append(tem) while 1: #省份查询 cinprovince = input("请输入所要查询的省名: ") if cinprovince in province_list: city_index = province_list.index(cinprovince) print('''%s : %s'''%(cinprovince,city_list[city_index])) #城市查询 while 1: cincity = input("请输入所要查询的城市名: ") if cincity in city_list[city_index]: print('''%s : %s'''%(cincity,region[cinprovince][cincity])) sign = input("请输入命令: ") if sign == "Q": os._exit(0) elif sign == 'back': print('''%s : %s'''%(cinprovince,city_list[city_index])) break elif cincity == 'Q': os._exit(0) elif cincity == 'back': break elif cinprovince == 'Q': os._exit(0) else: print(province_list) continue
五、心得:
1、os._exit()可以结束整个程序的执行,exit()也可以结束程序的执行,不过如果放在if或者for中,则只结束当前域内的程序,类似于break的功能
2、list(列表名.keys())与列表名.keys()的区别在于:前者打印出来之后没有dict.keys声明
3、listname.index(n)可以返回n所在listname中的下标