直接上需求:
实现一个多级菜单
三级菜单的实现
可以依次选择进入各个子菜单
也可以返回上级菜单
所需知识 列表 字典
需求也比较简单,但实际上做起来还是遇到许多的问题,我这边主要用到的知识点大概就是 字典 等
大致的思路 我是分别写了四个函数
Abnormal() 通过抛出异常来判断输入的编号是否合法
Province() 获取省级菜单
City() 获取市级菜单
Area() 获取区级菜单
来实现整个功能的,话不多说直接上代码了
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author: linghanchujian""" 多级菜单三级菜单的实现可以依次选择进入各个子菜单也可以返回上级菜单所需知识 列表 字典 """"""三级菜单字典 """ DictionaryMenu = {'山东' : {'青岛' : ['四方','黄岛','崂山','李沧','城阳'],'济南' : ['历城','槐荫','高新','长青','章丘'],'烟台' : ['龙口','莱山','牟平','蓬莱','招远']},'安徽' : {'合肥' : ['蜀山','庐阳','包河','经开','新站'],'芜湖' : ['镜湖','鸠江','无为','三山','南陵'],'蚌埠' : ['蚌山','龙子湖','淮上','怀远','固镇']},'广东' : {'深圳' : ['罗湖','福田','南山','宝安','布吉'],'广州' : ['天河','珠海','越秀','白云','黄埔'],'东莞' : ['莞城','长安','虎门','万江','大朗']} } """ 通过抛出异常来判断输入的编号是否合法 """ def Abnormal(Num):try:int(Num)return Trueexcept ValueError:return Falsepass""" 获取省级 """ def Province():for i,j in enumerate (DictionaryMenu):print(str(i+1)+"、"+j)LevelOneOptions = input("请选择上面一级菜单列表的序号(n 退出): ")if LevelOneOptions == 'n':exit()else:if Abnormal(LevelOneOptions):OneOptions = int(LevelOneOptions)# print(LevelOneCount+1)if OneOptions>0 and OneOptions<(i+2):City(OneOptions-1)else:print("请输入0~~"+str(i+2)+"之间的数")print("---------------------------------------")Province()else:print("编号不合法!!")print("---------------------------------------")Province()pass""" 获取市级 """ def City(Options):for i,j in enumerate(DictionaryMenu):if i == Options:for n,k in enumerate(DictionaryMenu[j]):print(str(n+1)+"、"+k)SecondLevelOptions = input("请选择上面二级菜单列表的序号(b/n 返回上级/退出): ")if SecondLevelOptions == "n":exit()elif SecondLevelOptions == "b":Province()return ;else:if Abnormal(SecondLevelOptions):TwoOptions = int(SecondLevelOptions)# print(LevelOneCount+1)if TwoOptions > 0 and TwoOptions < (n + 2):Area(Options,TwoOptions - 1)else:print("请输入0~~" + str(n + 2) + "之间的数")print("---------------------------------------")City(Options)else:print("编号不合法!!")print("---------------------------------------")City(Options)pass""" 获取区级 """ def Area(Options,TwoOptions):for i,j in enumerate(DictionaryMenu):if i == Options:for n,k in enumerate(DictionaryMenu[j]):if n == TwoOptions:for c,v in enumerate(DictionaryMenu[j][k]):print(str(c+1)+"、"+v)ThreeOptions = input("上面就是三级菜单全部内容(b/n 返回上级/退出): ")if ThreeOptions == "b":City(Options)return ;else:exit()passprint("欢迎来到三级菜单!!") Province()








