menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
#函数版:
def threeLM(dic):
while True:
for k in dic:print(k)
key = input('请输入,b返回,q退出>>:').strip()
if key == 'b' or key == 'q':return key
elif key in dic.keys() and dic[key]:
ret = threeLM(dic[key])
if ret == 'q':return 'q'
elif (not dic.get(key)) or (not dic[key]):
continue
threeLM(men)
#堆栈:
l = [menu]
while l:
# dic = l.pop()
for key in l[-1]:print(key)
k = input('请输入,b返回,q退出>>:').strip()
if k in l[-1].keys() and l[-1][k]:
l.append(l[-1][k])
elif k == 'b':l.pop()
elif k == 'q':break
else:continue
#普通版
data = menu
labyer = []
while True:
for k in data:
print(k)
choice = input('请输入,b返回,q退出>>:').strip()
if not choice:continue
if choice in data:
labyer.append(data)
print(labyer)
data = data[choice]
elif choice == 'b':
if len(labyer) != 0:
data = labyer.pop()
else:print('最后一层')
else:exit()