三级列表:
menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '地铁':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} } }, '闸北':{ '火车站':{ '携程':{} } }, }
基础版本:
#首先要有个死循环,能够一直的输入 while True: #打印第一层的数据 for key in menu: print(key) #然后叫用户选择 choice = input(">>:").strip()#去掉空格 #判断是否是回车 if choice == 'b':break if choice == 'q':exit("欢迎下次再来") if len(choice) ==0:continue#避免输入空格 print("------进入下一级------".center(50)) #第一,确保北京在字典里,有一个key,有,直接调这个key,进入下一级 #判断字典有没有这个值,有get和in两种方法 if choice not in menu:continue#如果不在里面继续往里输,跳过这次选择 #为下一层循环单独加一个循环 while True: #先把下一层取到 for key2 in menu[choice]: print(key2) choice2 = input(">>:").strip() if choice2 == 'b': break if choice2 == 'q': exit("欢迎下次再来{name}".format(name=choice2)) if len(choice2) ==0:continue if choice2 not in menu[choice]:continue#判断用户输入的选项如果没在第这层菜单中,跳出 # 为下一层循环单独加一个循环 while True: # 先把下一层取到 for key3 in menu[choice][choice2]: print(key3) choice3 = input(">>:").strip() if choice3 == 'b': break if choice3 == 'q': exit("欢迎下次再来") if len(choice3) == 0: continue if choice3 not in menu[choice][choice2]: continue # 判断用户输入的选项如果没在第这层菜单中,跳出 while True: # 先把下一层取到 for key4 in menu[choice][choice2][choice3]: print(key4) choice4 = input(">>:").strip() if choice4 == 'b': break if choice4 == 'q': exit("欢迎下次再来") if len(choice4) == 0: continue if choice4 not in menu[choice][choice2][choice3]: continue # 判断用户输入的选项如果没在第这层菜单中,跳出
优化之后,高级版本:
current_level = menu #当前层 #初始变量 last_level = [] #定义空列表,返回上一级用的,每进入一层就存一层 while True: for key in current_level:#循环每一层 print(key) choice = input(">>:").strip() if len(choice) == 0:continue # 返回上一层 # 自己记住每层的上一层,每次在进入下一层之前,我当前层就相当于下一层的父集 if choice == 'b': # current_level = last_level#把当前层的变量改成上一层[把当前层改成父亲层,这样下一次循环就回到上一层] if not last_level :break #if len(last_level) == 0:break current_level = last_level[-1]#每退出一层取列表最后一个值 last_level.pop()#删一层 if choice not in current_level:continue #choice在里面进入下一层 last_level.append(current_level)#每进一层存一层 current_level = current_level[choice]#给current_level重新赋值,进入下一层,每换一个变量,下一次就到了for key in current_level层
完毕。
自己不努力,谁也给不了自己想要的生活