#!/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")