# -*- coding: utf-8 -*-
#-*- 2017/07/13 -*-
#-*- Create by ChaiMeng
#多级菜单

import sys

multi_city = {'安徽省':{'合肥市':{'蜀山区':'安徽农业大学'}},'湖北省':{'武汉市':{'东湖区':'武汉大学'}},'河南省':{'开封市':{"龙亭区:河南大学"}}} #添加多级字典(字典的嵌套),以省、市、区、学校为例
print("按q返回上一层") #打印提示信息
print("按e退出") #打印提示信息

# print(multi_city['安徽省']['合肥市'])
# for i in multi_city['安徽省']['合肥市']:
# print (i) #以上三行为调试信息,主要确认多级字典(字典的嵌套)的输出

ec = 'q' #预定义变量
ex = 'e' #预定义变量
first_class_flag = True #定义一级菜单的标志位,后续可以通过该标记为退出多级循环,本例为在一级循环中体现,在二级、三级循环中体现了



while first_class_flag: #定义一级循环
for first_class in multi_city.keys(): #打印多级字典中省级目录
print(first_class)
first_class_input = input("请输入省份1>>>: ") #提示用户输入省份
if first_class_input in multi_city.keys(): #判断用户输入的省份是否在改字典的key中
for first_class_province in multi_city[first_class_input].keys(): #如果用户输入的数据在字典的省份中,则打印市区名称
print (first_class_province)
second_class_flag = True #定义二级菜单的标志位,后续可以通过改变标志位的布尔值,来退出二级循环
while second_class_flag: #进入二级循环
second_class_input = input("请输入市名2>>>: ") #提示输入市名称
if second_class_input in multi_city[first_class_input].keys(): #判断用户输入的市名是否在改字典的key中
for second_class_city in multi_city[first_class_input][second_class_input].keys(): #如果用户输入的数据在字典的市名中,则打印区名称
print(second_class_city)
third_class_flag = True #定义三级菜单的标志位,后续可以通过改变标志位的布尔值,来退出三级循环
while third_class_flag: #进入三级循环
third_class_input = input("请输入区名3>>>: ") #提示用户输入区名
if third_class_input in multi_city[first_class_input][second_class_input].keys(): #判断用户输入的区名是否在改字典的key中
third_class_zone = multi_city[first_class_input][second_class_input][third_class_input] #如果用户输入的数据在字典的区名中,则打印学校名称
print(third_class_zone)
elif third_class_input == ec: #如果用户输入的是q,返回到二级菜单
print('正在返回上一级菜单...... ')
third_class_flag = False #通过改变三级菜单的标志位,来退出三级循环
elif third_class_input == ex: #如果用户输入的是e,就退出整个程序
sys.exit('退出中……ing')
else: #其他情况提示输入错误,请重新输入
print("输入错误,请重新输入: ")
elif second_class_input == ec: #如果用户输入的是q,返回到一级菜单
print('正在返回上一级菜单...... ')
second_class_flag = False #通过改变三级菜单的标志位,来退出二级循环
elif second_class_input == ex: #如果用户输入的是e,就退出整个程序
sys.exit('退出中……ing')
else: #其他情况提示输入错误,请重新输入
print("输入错误,请重新输入: ")
elif first_class_input == ec: #因为本级菜单是顶级菜单,如果用户输入的是q,可以使用continue,持续在一级循环(顶层菜单)
print('已经最顶级菜单,完全退出请输入 e ')
continue
elif first_class_input == ex: #如果用户输入的是e,就退出整个程序
sys.exit('退出中……ing')
else: #其他情况提示输入错误,请重新输入
print("输入错误,请重新输入: ")


有问题需要探讨的可以加QQ:646783224