作业2:多级菜单
三级菜单
可依次选择进入各子菜单
所需新知识点:列表、字典
1.流程图
2.程序代码
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author Kevin Liu ''' readme 运行后输入数字查询云南的景点,增加返回和退出选项 ''' city_dict = { '昆明': { "五华区":{ "莲花街道":['莲花池'], "龙翔街道":["龙翔街"], "普吉街道":["黄土坡"] }, "盘龙区":{ "拓东街道":["拓东体育场"], "联盟街道":["奥斯迪广场"], "鼓楼街道":['圆通寺'] }, "西山区":{ "马街街道":["马街"], "碧鸡街道":["金马碧鸡坊"], "西山街道":["西山区政府"] }, "官渡区":{ "大板桥街道":["长水机场"], "小板桥街道":["世纪城"], "东站街道":["菊花村"] }, }, "玉溪": { "红塔区":{ "聂耳纪念公园":["聂耳音乐馆"], "红塔集团":["烟草庄园"], "两湖大瀑布":['古溪湖'] }, "新平县":{ "南恩瀑布":['飞流直下'], "褚橙庄园":["1号种植基地"], "石门山景区":["蜿蜒直上"] }, "易门县":{ "龙泉河":['龙泉喷泉'], "金三峡漂流":["激流勇进"], "百鸟园":["百鸟朝圣"] }, }, '西双版纳': { "景洪市":{ "大佛寺":['小乘佛教中心'], "热带花卉园":["鸡蛋花园"], "橄榄坝":["泼水广场"] }, "勐腊县":{ "望天树景区":["林间漫步"], "勐远仙境":["仙人洞"], "热带植物园":['棕榈园'] }, "勐海县":{ "茶马古道":["古道驿站"], "打洛口岸":["红木贸易"], "茶树王":['千年古树'] }, }, } city_index = [(index,key) for index,key in enumerate(city_dict)] city_index.append((len(city_index),"退出")) #增加返回上一级菜单的索引 print(city_index) while 1: for i in city_index: #打印城市列表索引 print(i,end='\n') get_city = input("输入需要查询的城市代号") if not get_city.isdigit(): print('输入的不是数字,请输入数字') continue elif int(get_city) > len(city_index): print('输入范围超过了城市列表') continue elif int(get_city) == len(city_index)-1: #输入数字等于了退出的索引值 print('欢迎再次查询,再见') break else: city = city_index[int(get_city)][1] #获取选择的城市名称 county_index = [(index,key) for index,key in enumerate(city_dict[city])] #创建区县的索引 county_index.append((len(county_index),'返回')) #增加返回上一层菜单的索引 while True: for i in county_index: #打印区县的列表 print(i,end='\n') get_county = input('输入需要查询的区县代号') if not get_county.isdigit(): print('输入的不是数字,请输入数字') continue elif int(get_county) > len(county_index): print('输入的范围超过了区县列表') continue elif int(get_county) == len(county_index)-1: print('返回上一级菜单') break else: location = county_index[int(get_county)][1] print(location) view_index = [(index,key) for index,key in enumerate(city_dict[city][location])] view_index.append((len(view_index),'返回')) while True: for i in view_index: print(i,end='\n') get_view = input('输入需要查询的景点代号') if not get_view.isdigit(): print('输入的不是数字,请输入数字') continue elif int(get_view) > len(view_index): print("输入的范围超过了景区列表") continue elif int(get_view) == len(view_index)-1: print('返回上一级菜单') break else: view = view_index[int(get_view)][1] print(city_dict[city][location][view]) print('over'.center(50, '*')) break