KillPython  

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

  

posted on 2017-02-14 13:36  KillPython  阅读(144)  评论(0编辑  收藏  举报