三级菜单
· 现有省、市、县3级结构,要求程序启动后,允许用户可依次选择进入各子菜单
· 可在任意—级菜单返回上—级
· 可以在任意—级菜单退出程序
环境:Pycharm,Python3.7
#_*_coding:utf-8_*_
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
print("q for returning to the previous unit and e for exiting")
while True:
for i in menu.keys():
print(i)
choose1=input("which choice do u want to select:")
flag=1
#设置标志以便于返回各个节点,不知道有没有类似C语言goto的东西
while flag:
if choose1 in menu.keys():
if len(menu[choose1])!=0:
#这个地方有点坑,有些键里面的值是空的,要做一个判断先
for i in menu[choose1].keys():
print(i)
flag=0
else:
flag=0
elif choose1 == 'q':
flag=0
continue
elif choose1 == 'e':
exit()
else:
print("erro\n")
flag=0
continue
flag2=1
#同flag1
choose2=input("which choice do u want to select:")
while flag2:
if choose2 in menu[choose1].keys():
if len(menu[choose1][choose2])!=0:
for i in menu[choose1][choose2].keys():
print(i)
flag2=0
else:
flag2=0
elif choose2 == 'q':
flag2=0
continue
elif choose2 == 'e':
exit()
else:
print("erro\n")
flag2=0
flag=1
continue
flag3=1
#同flag1
choose3=input("which choice do u want to select:")
while flag3:
if choose3 in menu[choose1][choose2].keys():
if len(menu[choose1][choose2][choose3])!=0:
for i in menu[choose1][choose2][choose3].keys():
print(i)
flag3=0
else:
flag3=0
elif choose3 == 'q':
flag3=0
flag=1
continue
elif choose3 == 'e':
exit()
else:
print("erro")
flag3=0
flag2=1
break
choose4=input("Try again? (y/n)" )
if choose4 == 'y':
continue
else:
exit()