python学习基础篇--编写三级菜单

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习基础篇--编写三级菜单相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#------------------------------------------------------
#制作一个三级菜单,要求:
#可以依次选择,进入到相应的菜单
#可以在任意层执行返回上一次或者退出
#-------------------------------------------------------
print("省市区县三级菜单展示")
dic= {
    陕西省:{
        西安市:[莲湖区,长安区,浐灞区,碑林区],
        渭南市:[临渭区,华州区,大荔县,蒲城县],
        汉中市:[汉台区,南郑区,城固县,西乡县],
    },
    浙江省:{
        杭州市:[西湖区,江干区,上城区,下城区],
        温州市:[鹿城区,龙湾区,瓯海区,洞头区],
        台州市:[椒江区,黄岩区,黄岩区,临海市],
    },
    河南省:{
        郑州市:[中原区,二七区,管城区,金水区],
        开封市:[鼓楼区,龙亭区,顺河区,祥符区],
        洛阳市:[涧西区,西工区,老城区,洛龙区],
    },
}
sheng_list=list(dic.keys()) #获取省列表
while True:
    print("".center(50,*))           #打印省标题栏,长度50,字符居中
    for i in sheng_list:
        print(sheng_list.index(i)+1,i)      #for循环读取省列表,并对读取的列表编号
    sheng_id=input("请输入省的编号,退出请输入q:")
    if sheng_id.isdigit():                  #判断输入的编号是否为数字
        sheng_id=int(sheng_id)              #对输入的编号取整
        if sheng_id >0 and sheng_id <=len(sheng_list):  #判断输入的编号是否大于零且小于等于省列表的长度
            sheng_name=sheng_list[sheng_id-1]             #获取省列表中的名字,列表中默认是从0开始,所以需要减1
            shi_list=list(dic[sheng_name].keys())          #获取市列表
            while True:
                print("".center(50,"*"))               #打印市标题栏,长度50,字符居中
                for i in shi_list:
                    print(shi_list.index(i)+1,i)            #for循环读取市列表,并对读取的列表编号
                shi_id=input("请输入市的编号,返回请输入b,退出请输入q:")
                if shi_id.isdigit():                         #判断输入的编号是否为数字
                    shi_id=int(shi_id)                           #对输入的编号取整
                    if shi_id >0 and shi_id<=len(shi_list):     #判断输入的编号是否大于零且小于等于省列表的长度
                        shi_name=shi_list[shi_id-1]              #获取市列表中的名字,列表中默认是从0开始,所以需要减1
                        xian_list=dic[sheng_name][shi_name]        #获取区县列表
                        while True:
                            print("区县".center(50,"*"))                #打印区县标题栏,长度50,字符居中
                            for i in xian_list:
                                print(xian_list.index(i)+1,i)             #for循环读取区县列表,并对读取的列表编号
                            back_or_quit=input("返回上一层请输入b,退出请输入q:")
                            if back_or_quit==b:                      #判断输入的字符是否等于字符b
                                break                                  #如果是,则结束本次循环,返回到上一个循环
                            elif back_or_quit==q:                    #判断输入的字符是否等于字符q
                                exit()                                  #如果是,则退出整个程序
                            else:
                                print("\033[31;1m非法输入!\033[0m")     #在县级目录输入非数字内容,则提示输入非法内容
                    else:
                        print("\033[31;1m编号%s不存在!\033[0m" %(shi_id))  #否则以红色字体醒目提示用户编号不存在
                elif shi_id==b:       #在市级目录输入b则返回到省级目录
                    break
                elif shi_id==q:
                    exit()               #在市级目录输入则q则退出程序
                else:
                    print("\033[31;1m非法输入!\033[0m")     #在市级目录输入非数字内容,则提示输入非法内容
        else:
            print("\033[31;1m编号%s不存在!\033[0m" %(sheng_id))  #在省级目录输入>0,<=3之外的数据,则提示输入不存在
    elif sheng_id==q:                  #在省级目录输入则q则退出程序,因为省级是第一个循环,所以break结束该循环就等同于退出程序
        break
    else:
        print("\033[31;1m非法输入!\033[0m")

 

以上是关于python学习基础篇--编写三级菜单的主要内容,如果未能解决你的问题,请参考以下文章

python学习之路-练习小程序03(三级菜单)

学习Python的第二十天三级菜单高级版

python 打印三级菜单

python系统学习:第三周之简单的三级菜单

python学习之路 三级菜单的实现

Python 基础 - Day 1 Assignment - Three tier menu 三级菜单