#!/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")
原文:http://www.cnblogs.com/nayqiang/p/7583536.html