#!/user/bin/python
# -*- coding:utf-8 -*-
# _author: wenrouge
# 作业2:三级菜单
# 数据结构:
# menu = {
# '北京':{
# '海淀':{
# '五道口':{
# 'soho':{},
# '网易':{},
# 'google':{}
# },
# '中关村':{
# '爱奇艺':{},
# '汽车之家':{},
# 'youku':{},
# },
# '上地':{
# '百度':{},
# },
# },
# '昌平':{
# '沙河':{
# '老男孩':{},
# '北航':{},
# },
# '天通苑':{},
# '回龙观':{},
# },
# '朝阳':{},
# '东城':{},
# },
# '上海':{
# '闵行':{
# "人民广场":{
# '炸鸡店':{}
# }
# },
# '闸北':{
# '火车站':{
# '携程':{}
# }
# },
# '浦东':{},
# },
# '山东':{},
# }
#
# 需求:
# 可依次选择进入各子菜单
# 可从任意一层往回退到上一层
# 可从任意一层退出程序
# 所需新知识点:列表、字典
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{},
}
},
'闸北':{
'火车战':{
'携程':{},
}
},
'浦东':{},
},
'山东':{},
}
run_flag = True
corrent_layer = menu
layer = []
while run_flag:
for i in corrent_layer:
print(i)
choice = input("请输入你选择的地址(也可以输入b上一层,q退出):")
if choice in corrent_layer:
layer.append(corrent_layer.keys())
corrent_layer = corrent_layer[choice]
# print(layer)
elif choice == 'b':
if len(layer) != 0:
corrent_layer = layer.pop()
# print(layer)
else:
pass
elif choice == 'q':
run_flag = False
else:
print('请正确输入!')
版本二
update_menu = menu # 定义临时保存菜单的变量
menu_list = [] # 定义存储每次菜单更新的列表
while True:
print('-------- ' + str(list(update_menu.keys())) + '---------')
input_choose = input("【b(B)返回,q(Q)退出】请输入你的选择:").strip()
if input_choose in update_menu:
menu_list.append(update_menu) # 把整个菜单(字典)当做一个列表元素存储
update_menu = update_menu[input_choose] # 更新菜单
elif input_choose.lower() == 'b':
if menu_list: # 如果列表不为空
update_menu = menu_list.pop() # 将列表的最后一个元素(即上一个菜单状态)弹出
elif input_choose.lower() == 'q':
break
else:
print("输入错误,请重新输入")