# athor : DevilsWhite
# -*- coding:UTF-8 -*-
# 1 作业版(12行代码)
last_class = [] #建个上级目录,好循环和调用
while True:
print("现有地址如下:")
for k in menu.keys():print(k) #同商品列表
choice = input("输入名字进入下一级/输入b进行返回上一级/输入q退出程序>>>")
if choice in menu:
if menu[choice]: #判断是否不能再下一级
last_class.append(menu) #保存当前目录,方便后续归还
menu = menu[choice] #用二级目录覆盖一级目录为了循环
elif choice == 'b':menu = last_class.pop()
elif choice == 'q':break
else:print("***输入有误,请核对***")
# 2 优化版
exit_flag = True #立个旗好终结
last_class = [] #建个上级目录,好循环和调用
footprint = {} #建个足迹列表,好看清浏览足迹
while exit_flag:
print("现有地址如下:".center(50,'-'))
for k in menu.keys():
print(k) #同商品列表
choice = input("输入名字进入下一级/输入b进行返回上一级/输入q退出程序>>>")
if choice in menu:
if menu[choice]: #判断是否不能再下一级
if footprint.setdefault(choice,1): #字典赋值统计足迹
footprint[choice] += 1
last_class.append(menu) #保存当前目录,方便后续归还
menu = menu[choice] #用二级目录覆盖一级目录为了循环
else:
print("已经是最低级了,请返回!")
print("".center(50,"*"))
else:
choice = choice.lower()
if choice == 'b':
if len(last_class) > 0: #将赋的值归还原字典
menu = last_class.pop()
elif choice == 'q':
if len(footprint) > 0:
for i in footprint.keys():
print("你浏览过的地方有%s,并且浏览了%s次"%(i,int(footprint[i])-1))
exit_flag = False
else:
print("***输入有误,请核对***")
# 3 函数版
menu = {'北京':{'海淀':{'五道口':{'soho':{},'网易':{},'google':{}},
'中关村':{'爱奇艺':{},'汽车之家':{},'youku':{},},
'上地':{'百度':{},},},
'昌平':{'沙河':{'老男孩':{},'北航':{},},
'天通苑':{},
'回龙观':{},},
'朝阳':{},
'东城':{},},
'上海':{'闵行':{"人民广场":{'炸鸡店':{}}},
'闸北':{'火车站':{'携程':{}}},
'浦东':{},},
'山东':{},}
def catalog(dict):
father_list = []
while True:
for i in dict.keys():
print(i)
choice = input("Add/b:back/q:quit>>>")
if choice in dict:
if dict[choice]:
dict = dict[choice]
father_list.append(dict)
elif choice.lower() == "b":
dict = father_list.pop()
elif choice.lower() == "q":
print("Bye~")
break
catalog(menu)