码迷,mamicode.com
首页 > 其他好文 > 详细

Day1作业2:多层菜单查询

时间:2016-05-11 13:23:11      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

流程图:

技术分享

code:

技术分享
#!/usr/bin/env python
# encoding: utf-8
# Auther:ccorz Mail:ccniubi@163.com Blog:http://www.cnblogs.com/ccorz/

#定义3层字典与其中列表
china_map={
    华南:{
        广东:{广州:[阿里,老男孩],佛山:[阿里,老男孩],深圳:[阿里,老男孩],东莞:[阿里,老男孩]},
        广西:{南宁:[阿里,老男孩],柳州:[阿里,老男孩],桂林:[阿里,老男孩],北海:[阿里,老男孩]},
        海南:{三亚:[阿里,老男孩],海口:[阿里,老男孩],三沙:[阿里,老男孩],詹州:[阿里,老男孩]},
        香港:{屯门:[阿里,老男孩],湾仔:[阿里,老男孩],北角:[阿里,老男孩],西贡:[阿里,老男孩]},
        澳门:{花地玛堂区:[阿里,老男孩],圣安多尼堂:[阿里,老男孩],望德堂区:[阿里,老男孩],大堂区:[阿里,老男孩]},
    },
    华东:{
        江苏:{南京:[阿里,老男孩],无锡:[阿里,老男孩],徐州:[阿里,老男孩],苏州:[阿里,老男孩],常州:[阿里,老男孩]},
        浙江:{杭州:[阿里,老男孩],温州:[阿里,老男孩],宁波:[阿里,老男孩],台州:[阿里,老男孩],舟山:[阿里,老男孩]},
        安徽:{合肥:[阿里,老男孩],芜湖:[阿里,老男孩],蚌埠:[阿里,老男孩],滁州:[阿里,老男孩],阜阳:[阿里,老男孩],宿州:[阿里,老男孩],六安:[阿里,老男孩],宣城:[阿里,老男孩]},
        福建:{福州:[阿里,老男孩],厦门:[阿里,老男孩],泉州:[阿里,老男孩],漳州:[阿里,老男孩],莆田:[阿里,老男孩],龙岩:[阿里,老男孩]},
        江西:{南昌:[阿里,老男孩],景德镇:[阿里,老男孩],萍乡:[阿里,老男孩],九江:[阿里,老男孩],赣州:[阿里,老男孩],宜春:[阿里,老男孩]},
        山东:{济南:[阿里,老男孩],泰安:[阿里,老男孩],德州:[阿里,老男孩],曲阜:[阿里,老男孩]},
        上海:{黄埔:[阿里,老男孩],徐汇:[阿里,老男孩],长宁:[阿里,老男孩],虹口:[阿里,老男孩]},
    },
    华中:{
        湖北:{武汉:[阿里,老男孩],黄石:[阿里,老男孩],十堰:[阿里,老男孩],襄阳:[阿里,老男孩],宜昌:[阿里,老男孩],鄂州:[阿里,老男孩],荆州:[阿里,老男孩]},
        湖南:{长沙:[阿里,老男孩],株洲:[阿里,老男孩],邵阳:[阿里,老男孩],岳阳:[阿里,老男孩],郴州:[阿里,老男孩]},
        河南:{郑州:[阿里,老男孩],开封:[阿里,老男孩],洛阳:[阿里,老男孩],焦作:[阿里,老男孩],平顶山:[阿里,老男孩]},
    },
    华北:{
        北京:{东城:[阿里,老男孩],西城:[阿里,老男孩],朝阳:[阿里,老男孩],海淀:[阿里,老男孩],石景山:[阿里,老男孩],大兴:[阿里,老男孩],丰台:[阿里,老男孩],昌平:[阿里,老男孩]},
        山西:{太原:[阿里,老男孩],吕梁:[阿里,老男孩],晋中:[阿里,老男孩],长治:[阿里,老男孩],大同:[阿里,老男孩],阳泉:[阿里,老男孩],晋城:[阿里,老男孩],朔州:[阿里,老男孩],忻州:[阿里,老男孩],临汾:[阿里,老男孩]},
        河北:{石家庄:[阿里,老男孩],邯郸:[阿里,老男孩],廊坊:[阿里,老男孩],保定:[阿里,老男孩],张家口:[阿里,老男孩],唐山:[阿里,老男孩],秦皇岛:[阿里,老男孩],沧州:[阿里,老男孩]},
        天津:{和平区:[阿里,老男孩],河东区:[阿里,老男孩],河北区:[阿里,老男孩],南开区:[阿里,老男孩],武清:[阿里,老男孩]},
        内蒙:{呼和浩特:[阿里,老男孩],鄂尔多斯:[阿里,老男孩],乌海:[阿里,老男孩],通辽:[阿里,老男孩],呼伦贝尔:[阿里,老男孩],乌兰浩特:[阿里,老男孩]},
    },
    西南:{
        四川:{成都:[阿里,老男孩],自贡:[阿里,老男孩],攀枝花:[阿里,老男孩],乐山:[阿里,老男孩],遂宁:[阿里,老男孩]},
        云南:{昆明:[阿里,老男孩],曲靖:[阿里,老男孩],玉溪:[阿里,老男孩],丽江:[阿里,老男孩],曲靖:[阿里,老男孩]},
        贵州:{贵阳:[阿里,老男孩],六盘水:[阿里,老男孩],遵义:[阿里,老男孩],安顺:[阿里,老男孩],毕节:[阿里,老男孩],铜仁:[阿里,老男孩]},
        重庆:{万州:[阿里,老男孩],涪陵:[阿里,老男孩],渝中:[阿里,老男孩],大渡口:[阿里,老男孩]},
        西藏:{拉萨:[阿里,老男孩],那曲:[阿里,老男孩],山南:[阿里,老男孩],昌都:[阿里,老男孩],林芝:[阿里,老男孩],日喀则:[阿里,老男孩]},
    },
    西北:{
        宁夏:{银川:[阿里,老男孩],石嘴山:[阿里,老男孩],吴忠市:[阿里,老男孩],固原市:[阿里,老男孩],中卫市:[阿里,老男孩]},
        陕西:{西安:[阿里,老男孩],铜川:[阿里,老男孩],宝鸡:[阿里,老男孩],咸阳:[阿里,老男孩],渭南:[阿里,老男孩],汉中:[阿里,老男孩],榆林:[阿里,老男孩]},
        甘肃:{兰州:[阿里,老男孩],天水:[阿里,老男孩],张掖:[阿里,老男孩],酒泉:[阿里,老男孩],嘉峪关:[阿里,老男孩],庆阳:[阿里,老男孩],陇南:[阿里,老男孩]},
        新疆:{乌鲁木齐:[阿里,老男孩],克拉玛依:[阿里,老男孩],哈密:[阿里,老男孩],库尔勒:[阿里,老男孩],昌吉:[阿里,老男孩],博尔塔拉:[阿里,老男孩]},
    },
    东北:{
        黑龙江:{哈尔滨:[阿里,老男孩],齐齐哈尔:[阿里,老男孩],鸡西:[阿里,老男孩],牡丹江:[阿里,老男孩],大兴安岭地区:[阿里,老男孩],黑河:[阿里,老男孩]},
        吉林:{长春:[阿里,老男孩],延吉:[阿里,老男孩],四平:[阿里,老男孩],吉林:[阿里,老男孩],松原:[阿里,老男孩]},
        辽宁:{沈阳:[阿里,老男孩],葫芦岛:[阿里,老男孩],大连:[阿里,老男孩],鞍山:[阿里,老男孩],营口:[阿里,老男孩],辽阳:[阿里,老男孩],朝阳:[阿里,老男孩]},
    }
}
#设置区域列表为空
area_list=[]
#遍历字典,将字典的key添加入空的区域列表
for i in china_map:
    area_list.append(i)
#设置退出循环的flag
break_flag=0
#当flag为初始值进入循环
while break_flag==0:
    #遍历并打印区域列表元素以及索引号
    for i in area_list:
        print(area_list.index(i),i)
    #用户交互,选择序列号或者退出
    area_num=input(\033[1;32;m输入您要查询的大区序列号(输入"q"退出查询):\033[0m)
    #判断输入是否为q
    if area_num.lower() == q:
        #改变循环flag的值
        break_flag=1
    #判断输入是否为数字
    elif area_num.isdigit():
        #数字大于等于元素数量
        if int(area_num) >= int(len(area_list)):
            print(输入的序列号无对应的区域地址,请重新输入...)
        #数字小于元素数量
        else:
            #设置区域字典
            area_map=china_map[area_list[int(area_num)]]
            #标识符为初始值的循环
            while break_flag==0:
                #省市列表为空
                province_list=[]
                #遍历区域字典,并将区域字典的key加入省市列表
                for i in area_map:
                    province_list.append(i)
                    #打印省市列表的所以好以及元素
                    print(province_list.index(i),i)
                # print(province_list)
                #用户交互,省市索引号,并高亮显示
                province_num=input(\033[1;32;m输入省的序列号(输入b返回上一层,输入q退出):\033[0m)
                #判断交互内容为b
                if province_num.lower() == b:
                    #退出循环,返回上一层循环
                    break
                #判断交互内容为q
                elif province_num.lower() == q:
                    print(查询退出)
                    #改变标识符初始值
                    break_flag=1
                #交互内容为数字时
                elif province_num.isdigit():
                    #设置省市字典
                    province_map=area_map[province_list[int(province_num)]]
                    #交互内容转化为数字,判断大于等于省市列表元素数量
                    if int(province_num) >= len(province_list):
                        #回显,进入下一次循环
                        print(输入的序列号无对应的省份,请重新输入...)
                    #交互内容转化为数字,判断小于省市列表元素数量
                    else:
                        #标识符为初始值时,进入循环
                        while break_flag==0:
                            #设置城市列表为空
                            city_list=[]
                            #遍历省市字典,并将key添加入城市列表
                            for i in province_map:
                                city_list.append(i)
                                #打印城市列表的索引号以及元素
                                print(city_list.index(i),i)
                            # print(‘citylist=========\n%s‘%city_list)
                            #交互,选择城市对应的序列号
                            city_num=input(\033[1;32;m想看各城市的最牛逼公司么?请输入相应的序列号(输入b返回上一层,输入q退出):\033[0m)
                            #判断交互内容为b
                            if city_num.lower() == b:
                                #退出循环,返回上一层循环
                                break
                            #交互内容为q
                            elif city_num.lower() == q:
                                print(退出..)
                                #改变标识符初始值
                                break_flag=1
                            #交互内容为数字
                            elif city_num.isdigit():
                                #交互内容转化为数字,判断大于等于城市列表的元素
                                if int(city_num) >= len(city_list):
                                    #回显,进入下一次循环
                                    print(序列号无对应的城市,请重新输入.......)
                                else:
                                    #遍历省市字典中城市key对应的公司value(value type为列表),打印其中的值
                                    for i in province_map[city_list[int(city_num)]]:
                                        #打印列表中元素,并将相应城市添加在公司名称前面
                                        print(\033[1;32;m%s%s\033[0m%(city_list[int(city_num)],i))
                                    #标识符为初始值,进入循环
                                    while break_flag==0:
                                        #查询完成,进入用户交互
                                        b_or_q=input(\033[1;32;m输入b返回上一层查询,输入q退出:\033[0m)
                                        #交互内容为b,退出循环,返回上一层循环
                                        if b_or_q.lower()==b:
                                            break
                                        #交互内容为q,回显退出程序,并改变标识符的值
                                        elif b_or_q.lower()==q:
                                            print(程序退出...)
                                            break_flag=1
                                        #交互内容为其他,回显并进入下一次循环
                                        else:
                                            print(输入错误,请重新输入:)
                            #交互内容为其他,回显并进入下一次循环
                            else:
                                print(输入有误,请重新输入...)
                #交互内容为其他,回显并进入下一次循环
                else:
                    print(输入有误,请重新输入...)
    else:
        print(输入有误,请重新输入...)
View Code

 

Day1作业2:多层菜单查询

标签:

原文地址:http://www.cnblogs.com/ccorz/p/5481271.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!