从学习Python来,老师布置了一次作业,就是完成对菜单的功能,输入一个省份,进而能查询省份下的县市,如果要继续查看直接输入市县就进一步查看,如果要返回直接输入提示数字即可:
创新互联建站服务紧随时代发展步伐,进行技术革新和技术进步,经过10多年的发展和积累,已经汇集了一批资深网站策划师、设计师、专业的网站实施团队以及高素质售后服务人员,并且完全形成了一套成熟的业务流程,能够完全依照客户要求对网站进行成都网站制作、做网站、建设、维护、更新和改版,实现客户网站对外宣传展示的首要目的,并为客户企业品牌互联网化提供全面的解决方案。代码如下:
#!/usr/bin/env python #-*- coding:utf-8 -*- provice = { "江苏省":{"苏州市":{'工业园区','姑苏区','吴中区'},"无锡市":{'锡山区','新区','南塘区'}}, "湖北省":{"武汉市":{'江汉区','江岸区','洪山区'},"宜昌市":{'夷陵区','枝江市','西陵区'}}, "浙江省":{"杭州市":{'上城区','下城区','拱墅区'},"湖州市":{'南浔区','吴兴区','安吉县'}}, "安徽省":{"合肥市":{'庐阳区','蜀山区','琼海区'},"芜湖市":{'鸠江区','新芜区','繁昌区'}} } for i in range(3):#循环3次防止无限调用 print "\033[31;1m----------行政区划图---------------\033[0m" for pro in provice.keys():#获取省信息列表,这里可以将provice.keys()赋值给某个一变量,如sheng_name_list = provice.keys(),然后再对sheng# _name_list进行遍历 print "\033[29;1m ============%s=============\033[0m" % pro#打印省份名字 print "\033[34;1m----------------------------------------------------\033[0m" proname = raw_input("请输入要查看省份的名字:") jump_up_flag = False #定义标志位用来跳出整个循环 if proname not in provice.keys():#判断输入省份名字如果不在地图中 continue#跳出本次循环,回到循环开头 else:#如果在地图列表中则进行如下遍历操作 print "\033[33;1m %s包含如下城市:\033[0m" %(proname) for s_name in provice[proname].keys():#遍历省份列表然后打印输出 print "\033[32;1m %s \033[0m" %(s_name)#输出省份名字列表 while True: cs_name = raw_input("输入要查看的城市名字:") chengshi_list = provice[proname].keys() if cs_name in chengshi_list: for area in provice[proname][cs_name]: print "\033[32;1m %s \033[0m" %(area) print "\033[31;1m-----------------------------\033[0m" else: print "\033[31;1m你输入的城市名\033[34;1m %s \033[0m\033[31;1m不存在请重新输入!\033[0m" % (cs_name) continue jump_tag = raw_input("\033[32;1m请问是否退出:1 退出、2 返回最上层,任意输入返回上一层:\033[0m") """ 判断用户的输入:如果输入1则将jump_up_flag 置为True然后跳出while循环,返回到上级目录,在上一层代码中判断标志位的代码 如果标志位为True执行break将跳出整个循环 如果输入2.直接break跳出while循环到最上级目录! """ if jump_tag == "1": jump_up_flag = True break if jump_tag == "2": break#如果jump_tag赋值为2,则直接跳出while循环,到上层for循环 if jump_up_flag:#判断如果标志位为True,将执行下面break代码跳出整个循环。 break else:#如果标志位(即jump_up_flag)为False,则直接执行continue终止本次for循环进入下一次for循环 continue else:#如果超出三次输入,则跳出整个for循环 print "\033[31;1m信息无效请重新输入!3次错误之后程序将退出!\033[0m" 总结:本案例重点是标识位,运用标识位的赋值对循环进行判断: 比如: if jump_tag == "1": jump_up_flag = True break if jump_tag == "2": break#如果jump_tag赋值为2,则直接跳出while循环,到上层for循环 if jump_up_flag:#判断如果标志位为True,将执行下面break代码跳出整个循环。 break 在jump_tag == "1"重新修改jump_up_flag = True,影响到下一次是否跳出整个循环的思路,这个是本次案例的点睛之笔 另外就是: for i in range(3): -------------- -------------- else:
配合使用,超过三次就直接退出for循环,else提示跳出for循环,for作为限制循环次数,这种用法在程序中是比较高明的思路
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。