1、简单繁多版(未优化之前):
#__author: liangchen Date: 2019/8/15
menu = {
"江西":{
"南昌":{
"南昌西站":{},
"东湖区":{}
},
"吉安":{
"永丰":{},
"吉水":{}
},
},
"上海":{
"嘉定":{
"城区":{},
"嘉定新城":{}
},
"徐汇":{
"复旦大学":{},
"徐家汇站":{}
}
},
"广东":{
"东莞":{
"东莞站":{},
"白石山":{}
},
"惠州":{
"惠州站":{},
"人字冈":{}
}
}
}
flag = True
while True and flag:
for i in menu:
print(i)
select1 = input("请选择地点(退出:q):").strip()
if select1 == 'q':
flag = False
while True and flag: #使程序在第二层循环
if select1 in menu:
for i in menu[select1]:
print(i)
select2 = input("请选择地点(返回上一层:b,退出:q):").strip()
if select2 == 'b':
break
if select2 == 'q':
flag = False
while True and flag: #使程序在第三层循环
if select2 in menu[select1]:
for i in menu[select1][select2]:
print(i)
select3 = input("请选择地点(返回上一层:b,退出:q):").strip()
if select3 in menu[select1][select2]:
print("welcome you come to %s!"%select3)
if select3 == 'b':
break
if select3 == 'q':
flag = False
2、简易优化版
#__author: liangchen Date: 2019/8/15
menu = {
"江西":{
"南昌":{
"南昌西站":{},
"东湖区":{}
},
"吉安":{
"永丰":{},
"吉水":{}
},
},
"上海":{
"嘉定":{
"城区":{},
"嘉定新城":{}
},
"徐汇":{
"复旦大学":{},
"徐家汇站":{}
}
},
"广东":{
"东莞":{
"东莞站":{},
"白石山":{}
},
"惠州":{
"惠州站":{},
"人字冈":{}
}
}
}
current_layer = menu
parent_layers = [] #存放父级菜单
while True:
for key in current_layer:
print(key)
select = input(">>>>").strip()
if select in current_layer:
parent_layers.append(current_layer) #追加父级菜单
current_layer = current_layer[select]
elif select == "b":
if parent_layers:
current_layer = parent_layers.pop()