#!/user/bin/env python
# -*- coding:utf-8 -*-
# 程式: 三級選單
#
# 要求:
#
# 列印省、市、縣三級選單
# 可返回上一級
# 可隨時退出程式
from collections import Iterator
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'網易':{},
'google':{}
},
'中關村':{
'愛奇藝':{},
'汽車之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龍觀':{},
},
'朝陽':{},
'東城':{},
},
'上海':{
'閔行':{
"人民廣場":{
'炸雞店':{}
}
},
'閘北':{
'火車戰':{
'攜程':{}
}
},
'浦東':{},
},
'山東':{},
}
L=[] #儲存當前狀態
node={} #儲存當前節點地址
for i in menu:
print(i)
node=menu
L.append(node)
#print(node)
#print(isinstance(node,Iterator))
#print("北京" in menu)
while True:
addr=str(input("輸入地名:")).strip()
if len(addr)==0:
print("輸出不能為空!請重輸")
continue
if addr in node: #判斷地址是否存在於當前節點
for i in node[addr]:
print (i)
L.append(node)
node=node[addr]
# print(L)
else:
if addr=="q":
print("歡迎下次再來!")
break
if addr == "b":
if len(L)>1:
for i in L[-1]:
print(i)
L.pop(-1)
node=L[-1]
三級選單簡化版
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'網易':{},
'google':{}
},
'中關村':{
'愛奇藝':{},
'汽車之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龍觀':{},
},
'朝陽':{},
'東城':{},
},
'上海':{
'閔行':{
"人民廣場":{
'炸雞店':{}
}
},
'閘北':{
'火車戰':{
'攜程':{}
}
},
'浦東':{},
},
'山東':{},
}
current_layer=menu #儲存當前的狀態
last_layers=[menu] #儲存之前的訪問狀態
while True:
for i in current_layer:
print(i)
choice=input(">>:")
if len(choice)==0:continue
if choice in current_layer:
last_layers.append(current_layer)
current_layer=current_layer[choice]
if choice=="b":
if last_layers:
current_layer=last_layers[-1]
last_layers.pop(-1)
if choice=="q":
break