作业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

浙公网安备 33010602011771号