>>> 低端版
- menu={'山西':
- {'太原':
- {'迎泽':['柳巷','五一广场','太原站'],
- '小店':['山西财经大学','山西大学','武宿机场'],
- '晋源':['晋祠','蒙山大佛''山西省图书馆']
- },
- '吕梁':
- {'柳林':['联盛中学','龙花垣'],
- '离石':['东关','滨河路的疯狗']
- },
- '大同':
- {'南郊':['大同大学','方特'],
- '云冈':['云冈石窟'],
- }
- },
- '北京':
- {'朝阳':
- {'国贸':['渣打银行','CCTV'],
- '望京':['陌陌','奔驰','360'],
- '三里屯':['优衣库','苹果']
- },
- '海淀':
- {'五道口':['清华','快手'],
- '中关村':['汽车之家','新东方'],
- },
- '昌平':
- {'沙河':['老男孩','某鸟'],
- '天通苑':['链家'],
- '回龙观':['回龙观公园']
- }
- },
- '陕西':
- {'西安':{'未央区':['大明宫遗址公园','汉城湖旅游景区'],
- '长安区':['翠华山','杨虎城陵园'],
- },
- '榆林':{'榆阳区':['世纪广场'],
- '吴堡县':['黄河大道']
- }
- }
- }
- exit_flag=False
- while exit_flag==False:
- for key in menu:
- print(key)
- choice=input('>> 请选择进入下一层或选择 exit 退出主菜单:').strip()
- if choice=='exit':
- break
- elif choice in menu:
- while exit_flag==False:
- for key2 in menu[choice]:
- print(key2)
- choice2=input('>> 请选择进入下一层或者选择 back 返回上一层, 选择 exit 退出主菜单:').strip()
- if choice2=='back':
- break
- elif choice2=='exit':
- exit_flag=True
- elif choice2 in menu[choice]:
- while exit_flag==False:
- for key3 in menu[choice][choice2]:
- print(key3)
- choice3=input('>> 请选择进入下一层或选择 back 返回上一层, 选择 exit 退出主菜单:').strip()
- if choice3=='back':
- break
- elif choice3=='exit':
- exit_flag=True
- elif choice3 in menu[choice][choice2]:
- for i in menu[choice][choice2][choice3]:
- print(i)
- while exit_flag==False:
- choice4=input('已到达最后一层, 请选择 back 返回上一层或选择 exit 退出主菜单 >>:').strip()
- if choice4=='back':
- break
- elif choice4 == 'exit':
- exit_flag = True
>>> 高端版
- menu={'山西':
- {'太原':
- {'迎泽':['柳巷','五一广场','太原站'],
- '小店':['山西财经大学','山西大学','武宿机场'],
- '晋源':['晋祠','蒙山大佛''山西省图书馆']
- },
- '吕梁':
- {'柳林':['联盛中学','龙花垣'],
- '离石':['东关']
- },
- '大同':
- {'南郊':['大同大学','方特'],
- '云冈':['云冈石窟'],
- }
- },
- '北京':
- {'朝阳':
- {'国贸':['渣打银行','CCTV'],
- '望京':['陌陌','奔驰','360'],
- '三里屯':['优衣库','苹果']
- },
- '海淀':
- {'五道口':['清华','快手'],
- '中关村':['汽车之家','新东方'],
- },
- '昌平':
- {'沙河':['老男孩','某鸟'],
- '天通苑':['链家'],
- '回龙观':['回龙观公园']
- }
- },
- '陕西':
- {'西安':{'未央区':['大明宫遗址公园','汉城湖旅游景区'],
- '长安区':['翠华山','杨虎城陵园'],
- },
- '榆林':{'榆阳区':['世纪广场'],
- '吴堡县':['黄河大道']
- }
- }
- }
- current_layer=menu #设置当前层的初始值为 menu
- choiced_layer=[] #建立一个已选层列表
- while True:
- for key in current_layer:
- print(key) #打印当前层信息
- choice=input('>>> 输入名字进入下一层, back 返回上一层, exit 退出:').strip()
- if choice in current_layer:
- choiced_layer.append(current_layer) #把当前层加入已选层列表
- current_layer=current_layer[choice] #当前层进入已选下一层
- elif choice=='back':
- if choiced_layer: #如果列表不为空, 执行以下操作
- current_layer = choiced_layer.pop() #将最后选择的层从已选层取出来, 并赋给当前层
- elif choice=='exit':
- break
- else:
- print('无此项')
来源: http://www.bubuko.com/infodetail-2881338.html