需求
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
代码实现
# _*_ coding:_utf-8 _*_
"""
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
"""
menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'北京邮电大学': {},
'北京航空航天大学': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车站': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
}
count = menu # 将字典赋一个动态的值
count_1 = [] # 创建一个用来处理返回选项的列表
while True:
for a in count: # 把动态值赋给a
print(a)
name = input("请输入要查询的地点(退出请输入(q),返回上一级请输入(u)): ").lower().strip() # 换成小写并去除开头和末尾的空格
if name in count: # 在字典中搜索输入值
count_1.append(count) # 找到值后把动态值加到列表count_1里面
count = count[name] # 将下级列表重新赋值给count
elif name == "u": # 当输入“u“时将返回上一层
if count_1:
count = count_1.pop() # 把列表最后面加的值删掉,并重新赋值给count。pop会返回被删除的值
else:
print("已经到顶层了!")
elif name == "q": # 当输入“q”时将退出
break
else:
print("您输入错误啦,请您重新输入!")