三级菜单:1.打印省、市、县三级菜单 2.可随时返回上一级 3.可随时退出程序
北京
山东
上海
>:北京
朝阳
昌平
海淀
>:昌平
沙河
天通苑
>:沙河
阿泰包子
b 任何一层输入b,可以返回上一层
q 退出程序
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
exit_flag=True #定义变量条件,改变条件程序结束
while exit_flag: #当exit_flag=True时输出menu[key],第一层菜单
for key in menu:
print(key)
choice=input(">:").strip() #定义变量输入choice
if choice =='q': #当输入“q”退出整个程序
exit_flag=False
continue
if len(choice) == 0: #当输入变量为空时,结束本次循环,重新开始本层循环
continue
if choice in menu: #判断输入变量choice是否在menu中
while exit_flag:
net_layer = menu[choice] #给予menu[choice]定义本层菜单新变量net_layer
for key2 in net_layer: #输出第二层菜单
print(key2)
choice2=input(">>:").strip() #定义变量输入choice2
if choice2 == "b": #当输入变量choice2为“b”时,返回结束本层循环,返回上一层循环
break
if choice2=="q": #当输入“q”退出整个程序
exit_flag=False
continue
if len(choice2)==0: #当输入变量为空时,结束本次循环,重新开始本层循环
continue
if choice2 in net_layer: #判断输入变量choice2是否在net_layer中
while exit_flag:
net_layer2 = net_layer[choice2] #给予net_layer[choice2]定义本层菜单新变量net_layer2
for key3 in net_layer2: #输出第三层菜单
print(key3)
choice3=input(">>>:").strip() #定义变量输入choice3
if choice3=="b": #当输入变量choice2为“b”时,返回结束本层循环,返回上一层循环
break
if choice=="q": #当输入“q”退出整个程序
exit_flag=False
continue
if len(choice3)==0: #当输入变量为空时,结束本次循环,重新开始本层循环
continue
if choice3 in net_layer2: #判断输入变量choice3是否在net_layer2中
net_layer3=net_layer2[choice3] #给予net_layer2[choice3]定义本层菜单新变量net_layer3
for key4 in net_layer3: #输出第四层菜单
print(key4)
choice4 = input(">>>>:").strip() #定义变量输入choice3,此处防止上层操作结束后再次循环
#此处只要不输入choice4则程序就不会无限循环
if choice4 == 'b': break
if choice4 == 'q':
exit_flag = True
continue
print("done!")
程序运行效果: