# python实现三级菜单，老男孩培训看到的练习题

L = {'四川省':{'成都市':['成都县1','成都县2','成都县3','成都县4',],\
'德阳市':['中江县1','中江县2','中江县3']},\
'重庆市':{'重庆市':['洪崖洞区1','洪崖洞区2','洪崖洞区3',]},\
'陕西省':{'西安市':['西安区1','西安区2','西安区3',],'宝鸡市':['宝鸡区1','宝鸡区2','宝鸡区3',]}}

print('您即将进入选择省份及城市程序，途中随时输入Q退出,\
\n输入返回可返回上一级')
print('省份如下：')
flag = True
for i in L:
print(i)
J = input('请输入省份：')
while flag:

if J == 'Q':
print('end')
flag = False
if J in L and flag:
print('城市列表如下：')
for n in L[J]:
print(n)
city = input('请输入城市：')
while J in L and flag:
if city == 'Q':
print('您的住址是%s' %J)
flag = False
break
elif city == '返回':
J = input('请输入省份：')
break
if city in L[J] and flag:
print('县列表如下：')
for c in L[J][city]:
print(c)
xian = input('请输入县：')
while city in L[J] and flag:
if xian == 'Q':
print('您的住址是%s%s' %(J,city))
flag = False
break
elif xian == "返回":
city = input('请输入城市：')
break
while xian in L[J][city] and flag:
print('您的住址是%s%s%s' %(J,city,xian))
flag = False
break

else:
if flag == True:
xian = input("县及列表不存在，请重新输入：")

else:
if (flag == True) and ((city in L[J]) == False):
city = input('城市列表不存在，请重新输入：')

else:
if (flag == True) and ((J in L) == False) :
J = input('省份不存在，请重新输入：')

L = {'四川省':{'成都市':['成都县1','成都县2','成都县3','成都县4',],\
'德阳市':['中江县1','中江县2','中江县3']},\
'重庆市':{'重庆市':['洪崖洞区1','洪崖洞区2','洪崖洞区3',]},\
'陕西省':{'西安市':['西安区1','西安区2','西安区3',],'宝鸡市':['宝鸡区1','宝鸡区2','宝鸡区3',]}}
current_layer = L #实现动态循环
parent_layer = [] #保存所有父级，最后一个永远都是上一个父级
while True:
for key in current_layer:
print(key)
choice = input('>>>:').strip()
if len(choice) == 0:continue
if choice in current_layer:
parent_layer.append(current_layer)   #进入下一层之前把当前层父级追加到列表中，当用户选择B的时候用pop取出父级
current_layer = current_layer[choice]
elif choice == 'b':
if parent_layer:
current_layer = parent_layer.pop()
else:
print('无此项')


©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试