您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
从学习Python来,老师布置了一次作业,就是完成对菜单的功能,输入一个省份,进而能查询省份下的县市,如果要继续查看直接输入市县就进一步查看,如果要返回直接输入提示数字即可:
代码如下:
#!/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作为限制循环次数,这种用法在程序中是比较高明的思路
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。