作业二:多级菜单
(1)三级菜单
(2)可以次选择进入各子菜单
(3)所需新知识点:列表、字典
要求:输入back返回上一层,输入quit退出整个程序
思路:
(1)首先定义好三级菜单字典;
(2)提取第一级省的编号,打印包含哪些省份,让用户输入省份的编号,能够显示对应的省,这个过程需要创建一个字典,用于存放省原有的名称和编号,以便用户输入之后进去匹配;
(3)进入第二级菜单,市的提取,市也存放在一个字典中,以便用户输入对应的编号的时候能够到字典中查找,并返回对应的市;
(4)根据上面输入,得到县/区的列表,遍历列表,并使用enumerate()给县/区添加编号,对应的索引只需减一即可,因为不可能让用户看到从0开始,而列表默认是从0开始的;
流程图如下:
代码如下:
1 import collections 2 dict_db = {"河南":[ 3 {"郑州":["中原区","金水区","二七区","上街区","巩义市","新郑市","新密市","登封市","荥阳市","中牟县"]}, 4 {"开封":["鼓楼区","龙亭区","禹王台区","金明区","开封县","尉氏县","兰考县","杞县","通许县"]}, 5 {"南阳":["卧龙区","宛城区","邓州市","桐柏县","方城县","淅川县","镇平县","唐河县","南召县","内乡县"]}, 6 {"洛阳":["西工区","老城区","涧西区","瀍河回族区","洛龙区","吉利区","偃师市","孟津县","汝阳县"]}, 7 8 ], 9 "湖南":[ 10 {"长沙":["岳麓区","芙蓉区","天心区","开福区","雨花区","浏阳市","长沙县"]}, 11 {"岳阳":["岳阳楼区","云溪区","君山区","临湘市","汨罗市","岳阳县"]}, 12 {"株洲":["天元区","荷塘区","芦淞区","石峰区","醴陵市","株洲县","炎陵县"]}, 13 {"湘潭":["岳塘区","雨湖区","湘乡市","韶山市","湘潭县"]}, 14 ], 15 "广东":[ 16 {"广州":["越秀区","荔湾区","海珠区","天河区","白云区","黄埔区","番禺区","花都区"]}, 17 {"深圳":["福田区","罗湖区","南山区","宝安区","龙岗区","盐田区"]}, 18 {"珠海":["香洲区","斗门区","金湾区"]}, 19 ] 20 } 21 22 if __name__ == "__main__": 23 active = True 24 #程序标识符,控制程序什么时候停止,由于包含多层循环,当active=False的时候终止整个循环 25 #用户输入quit时,active=False,结束整个循环;用户输入back时,break,退出当前循环,跳回上一次循环 26 while active: 27 print("欢迎来到全国省市区查询系统...") 28 p_dict = {} #用户存放编号和省份,让用户输入编号的时候可以显示身份 29 print("+---------------------------------------------------------------+") 30 for p_num,p_key in enumerate(dict_db.keys(),1): #enumerate()添加编号 31 p_dict[p_num] = p_key 32 33 print("省的编号:%d 省的名称:%s" %(p_num,p_key)) 34 print("+---------------------------------------------------------------+") 35 find_p = input("请输入你要查询的省的编号(输入quit退出):") 36 if find_p == "quit": 37 break 38 39 elif find_p.isdigit() and int(find_p) <= len(p_dict): 40 print("