新手小白 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
    pass

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

 

posted @ 2017-07-14 23:29  凌寒初见  阅读(284)  评论(0)    收藏  举报