首页 > 代码库 > 新手小白 python之路 Day1 (三级菜单功能实现)

新手小白 python之路 Day1 (三级菜单功能实现)

直接上需求:

        实现一个多级菜单

    三级菜单的实现
    可以依次选择进入各个子菜单
    也可以返回上级菜单
    所需知识 列表 字典

需求也比较简单,但实际上做起来还是遇到许多的问题,我这边主要用到的知识点大概就是  字典 等

大致的思路 我是分别写了四个函数

Abnormal() 通过抛出异常来判断输入的编号是否合法
Province() 获取省级菜单
City() 获取市级菜单
Area() 获取区级菜单
来实现整个功能的,话不多说直接上代码了
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: linghanchujian

"""
多级菜单
  三级菜单的实现
  可以依次选择进入各个子菜单
  也可以返回上级菜单
  所需知识 列表 字典
"""

"""
 三级菜单字典
"""
DictionaryMenu = {
    山东 : {
         青岛 : [四方,黄岛,崂山,李沧,城阳],
         济南 : [历城,槐荫,高新,长青,章丘],
         烟台 : [龙口,莱山,牟平,蓬莱,招远]
     },
    安徽 : {
        合肥 : [蜀山,庐阳,包河,经开,新站],
         芜湖 : [镜湖,鸠江,无为,三山,南陵],
        蚌埠 : [蚌山,龙子湖,淮上,怀远,固镇]
     },
    广东 : {
         深圳 : [罗湖,福田,南山,宝安,布吉],
         广州 : [天河,珠海,越秀,白云,黄埔],
         东莞 : [莞城,长安,虎门,万江,大朗]
     }
}
"""
通过抛出异常来判断输入的编号是否合法
"""
def Abnormal(Num):
    try:
        int(Num)
        return True
    except ValueError:
        return False

"""
获取省级
"""
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()


    pass

print("欢迎来到三级菜单!!")
Province()

 

新手小白 python之路 Day1 (三级菜单功能实现)