三级菜单
作业需求
- 可以一层一层的进入到所有层 ;
- 可以在每层返回上一层 ;
- 可以在任意层回退上一层或退出;
# Administrator 2019/6/12 13:41
menu = {
'北京':{
'朝阳':{
'国贸':{},
'CICC':{},
'HP':{},
'渣打银行':{},
'CCTV':{},
},
'望京':{
'陌陌':{},
'奔驰':{},
'360':{},
},
'三里屯':{
'优衣库':{},
'apple':{},
},
'昌平':{
'沙河':{
'老男孩':{},
'阿泰包子':{},
},
'天通苑':{
'链家':{},
'我爱我家':{},
},
'回龙观':{},
},
'海淀':{
'五道口':{
'谷歌':{},
'网易':{},
'sohu':{},
'快手':{},
},
'中关村':{
'youku':{},
'Iqiyi':{},
'汽车之家':{},
'新东方':{},
'QQ':{},
},
},
},
'上海':{
'浦东':{
'陆家嘴':{
'CICC':{},
'高盛':{},
'摩根':{},
},
},
'闵行':{},
'静安':{},
},
'山东':{
'济南':{},
'德州':{
'乐陵':{
'丁务镇':{},
'城区':{},
},
'平原':{},
},
'青岛':{},
},
}
floor = menu #定义当前层为menu,实现动态循环;
empty_list = [] #定义一个空列表,保存所有父级,最后一个元素永远都是父级;
while True: #while True 语句中一定要有结束该循环的break语句,否则会一直循环下去;
for key in floor:
print(key) #打印菜单内容
#让用户选择输入,strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列;
choice = input("请输入地址>>>【返回/b,退出/q】:").strip()
if choice == 'q': #判断如果用户输入q,便break跳出循环;
break
#判断用户如果输入的字符长度如果为0,便跳出本次循环;
if len(choice) == 0 : #len() 方法返回对象(字符、列表、元组等)长度或项目个数。
continue
if choice in floor: #如果用户输入的是菜单里的内容;
#在进入下一层之前,把当前层追加到列表中;
#下一次循环时,如果用户输入b,就可以直接取列表的最后一个值出来;
empty_list.append(floor) #append() 方法用于在列表末尾添加新的对象;
floor = floor[choice] #改成下一层;
elif choice == 'b': #如果用户输入b;
if empty_list: #判断列表是否为空;
#pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
floor = empty_list.pop() #取出列表最后一个值,因为他就是当前层的父级;
else:
print('您输入有误!')