首页 > 代码库 > python三级菜单

python三级菜单

需求:

编写三级菜单
    1.菜单需求:
        一级菜单:            北京                                  山西
        二级菜单:    朝阳                昌平               长治           大同
        三级菜单:三里屯    工体       沙河  西二旗       潞城  黎城     阳高县  左云县
    2.任何一级都可以输入b返回上一级,输入q退出。
    3.知识涵盖字典、列表、for循环、while循环、字符串格式化

流程图:

技术分享

python代码

#!/bin/bash/env python
#python3.X

#定义三级菜单字典zone
zone = {
    ‘北京‘:{
        ‘朝阳‘:[‘三里屯‘,‘工体‘ ],
        ‘昌平‘:[‘沙河‘,‘西二旗‘ ]
    },
    ‘山西‘:{
        ‘长治‘:[‘潞城‘, ‘黎城‘ ],
        ‘大同‘:[‘阳高县‘,‘左云县‘]
    }
}
#定义省级列表
province_list = list(zone.keys())
#打印省级列表循环
while True:
    print("欢迎光临省级列表".center(20,‘-‘))
    #循环省级列表
    for i in province_list:
        #打印省级列表序号和省级名称
        print(province_list.index(i)+1,i)
    #提示输入
    p1 = input("请选择序号:例:1  [输入q:退出]")
    #判断输入的是否全是数字
    if p1.isdigit():
        #如果输入的是数字,用int进行强制转换成整形
        p1 = int(p1)
        #如果p1 大于0或者小于等于省级列表的参数数量
        if p1 >0 and p1 <= len(province_list):
            #求出省级名称
            province_name = province_list[p1-1]
            #求出省级下边的市级列表
            city_list = list(zone[province_name].keys())
            #打印市级列表循环
            while True:
                print("欢迎光临市级列表".center(20, ‘-‘))
                #循环市级列表
                for c in city_list:
                    #打印市级列表序号和市级列表名称
                    print(city_list.index(c)+1,c)
                #提示输入
                c1 = input("请选择序号:例:1 [输入b:返回上一级][输入q:退出]")
                #判断是否输入的是数字
                if c1.isdigit():
                    c1 = int(c1)
                    #如果输入的序号在市级列表序列之内,打印列表,不在,告知不在。
                    if c1 >0 and c1 <= len(city_list):
                        #求出市级列表的名称
                        city_name = city_list[c1-1]
                        #求出市级下边的县级列表:
                        county_list = list(zone[province_name][city_name])
                        #县级列表循环
                        while True:
                            print("欢迎光临县级列表".center(20,"-"))
                            #循环县级列表
                            for c2 in county_list:
                                #打印县级列表
                                print(county_list.index(c2)+1,c2)
                            #提示输入
                            c2 = input("请输入相应符号:[输入b:返回上一级][输入q:退出]")
                            #如果输入是b 退出这个循环
                            if c2 == "b":
                                break
                            #如果输入的是q 退出整个循环
                            elif c2 == "q":
                                #exit() 代表退出整个循环
                                exit()
                            #如果输入的不是b、q 就提示重新输入
                            else:
                                print("\033[31m输入错误,Please re-enter!\033[0m")
                    else:
                        print("\n输入的序号%d不在此列表中!Please RE-enter!\n"%c1)
                #如果输入的是b 退出这个循环
                elif c1 == "b":
                    break
                #如果输入的是q 退出整个程序
                elif c1 == "q":
                    exit()
                #如果输入的不是数字、b 、q 那么提示 重新输入
                else:
                    print("\033[31m输入错误,Please re-enter!\033[0m")
        else:
            print("\n输入的%d不在此列表中!Please RE-enter!\n"%p1)
    #如果不是数字,看是否是 字母q
    elif p1 == "q":
        #如果是q 执行exit()退出整个程序
        exit()
    #如果输入的不是数字和q,提示重新输入
    else:
        print("\033[31m输入错误,Please re-enter!\033[0m")


本文出自 “506554897” 博客,请务必保留此出处http://506554897.blog.51cto.com/2823970/1932872

python三级菜单