从学习Python来,老师布置了一次作业,就是完成对菜单的功能,输入一个省份,进而能查询省份下的县市,如果要继续查看直接输入市县就进一步查看,如果要返回直接输入提示数字即可:

代码如下:

#!/usr/bin/envpython#-*-coding:utf-8-*-provice={"江苏省":{"苏州市":{'工业园区','姑苏区','吴中区'},"无锡市":{'锡山区','新区','南塘区'}},"湖北省":{"武汉市":{'江汉区','江岸区','洪山区'},"宜昌市":{'夷陵区','枝江市','西陵区'}},"浙江省":{"杭州市":{'上城区','下城区','拱墅区'},"湖州市":{'南浔区','吴兴区','安吉县'}},"安徽省":{"合肥市":{'庐阳区','蜀山区','琼海区'},"芜湖市":{'鸠江区','新芜区','繁昌区'}}}foriinrange(3):#循环3次防止无限调用print"\033[31;1m----------行政区划图---------------\033[0m"forproinprovice.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#定义标志位用来跳出整个循环ifpronamenotinprovice.keys():#判断输入省份名字如果不在地图中continue#跳出本次循环,回到循环开头else:#如果在地图列表中则进行如下遍历操作print"\033[33;1m%s包含如下城市:\033[0m"%(proname)fors_nameinprovice[proname].keys():#遍历省份列表然后打印输出print"\033[32;1m%s\033[0m"%(s_name)#输出省份名字列表whileTrue:cs_name=raw_input("输入要查看的城市名字:")chengshi_list=provice[proname].keys()ifcs_nameinchengshi_list:forareainprovice[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)continuejump_tag=raw_input("\033[32;1m请问是否退出:1退出、2返回最上层,任意输入返回上一层:\033[0m")"""判断用户的输入:如果输入1则将jump_up_flag置为True然后跳出while循环,返回到上级目录,在上一层代码中判断标志位的代码如果标志位为True执行break将跳出整个循环如果输入2.直接break跳出while循环到最上级目录!"""ifjump_tag=="1":jump_up_flag=Truebreakifjump_tag=="2":break#如果jump_tag赋值为2,则直接跳出while循环,到上层for循环ifjump_up_flag:#判断如果标志位为True,将执行下面break代码跳出整个循环。breakelse:#如果标志位(即jump_up_flag)为False,则直接执行continue终止本次for循环进入下一次for循环continueelse:#如果超出三次输入,则跳出整个for循环print"\033[31;1m信息无效请重新输入!3次错误之后程序将退出!\033[0m"总结:本案例重点是标识位,运用标识位的赋值对循环进行判断:比如:ifjump_tag=="1":jump_up_flag=Truebreakifjump_tag=="2":break#如果jump_tag赋值为2,则直接跳出while循环,到上层for循环ifjump_up_flag:#判断如果标志位为True,将执行下面break代码跳出整个循环。break在jump_tag=="1"重新修改jump_up_flag=True,影响到下一次是否跳出整个循环的思路,这个是本次案例的点睛之笔另外就是:foriinrange(3):----------------------------else:


配合使用,超过三次就直接退出for循环,else提示跳出for循环,for作为限制循环次数,这种用法在程序中是比较高明的思路