python中的循环控制(一) 最后更新时间:2020年12月31日 #### 循环控制 ##### while循环表达式 当程序从上至下执行时,遇到 while 循环语句,则会判断表达式 是否成立 ,当成立时 则会进入 while 循环体内,执行 循环体内部执行的代码块。直到判断表达式 不成立时 ,则 终止循环。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020123012250743.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MjIxMTM1Mg==,size_16,color_FFFFFF,t_70#pic_center) 示例: 例子中导入了一个time模块,方便代码运行的时候看效果。 ```python import time level = 1 while level <40: print("刷怪") print(">>>>") time.sleep(0.5) print(">>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>>>>>") time.sleep(0.5) print("升级!") level += 1 print("可以去打关卡BOSS了!") ``` ##### break 与 continue 语句 ###### · break: 当 循环体 执行的过程中想要 退出循环体,就可以使用到 break 语句。 示例: 例子中导入了time模块和random模块,方便代码执行查看效果。 ```python import time from random import randint level = 1 monster = ["哥布林", "野山猪", "40级直升经验果"] while level <40: print("刷怪") m = monster[randint(0, 2)] if m == "哥布林": print("发现了野生的哥布林!") print(">>>>") time.sleep(0.5) print(">>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>>>>>") time.sleep(0.5) print("升级!") level += 1 print("当前等级:{}".format(level)) elif m == "野山猪": print("发现了野生的野山猪!") print(">>>>") time.sleep(0.5) print(">>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>>>>>") time.sleep(0.5) print("升级!") level += 3 print("当前等级:{}".format(level)) else: print("发现了野生的40级直升经验果!") print("芜湖,舒服了,搞起,搞起。") level = 40 print("当前等级:{}".format(level)) break print("可以去打关卡BOSS了!") ``` ###### · continue: continue 语句用于 跳过 当前循环体 剩余部分的代码,直接 开始下一轮循环。它 不会退出和终止循环。 示例: 例子中导入了time模块和random模块,方便代码执行查看效果。 ```python import time from random import randint level = 1 monster = ["哥布林", "野山猪", "水晶龙"] while level <40: print("刷怪") m = monster[randint(0, 2)] if m == "哥布林": print("发现了野生的哥布林!") print(">>>>") time.sleep(0.5) print(">>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>>>>>") time.sleep(0.5) print("升级!") level += 1 print("当前等级:{}".format(level)) elif m == "野山猪": print("发现了野生的野山猪!") print(">>>>") time.sleep(0.5) print(">>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>>>>>") time.sleep(0.5) print("升级!") level += 3 print("当前等级:{}".format(level)) else: print("发现了野生的水晶龙 !") print("芜湖,打不过,溜了,溜了。") print("当前等级:{}".format(level)) continue print("可以去打关卡BOSS了!") ``` ##### while 的 else 从句 while 循环还可以增加一个 else 从句。当 while 循环 正常执行 完毕,会执行 else语句。 示例: ```python import time from random import randint level = 1 monster = ["哥布林", "野山猪", "40级直升经验果"] while level <40: print("刷怪") m = monster[randint(0, 2)] if m == "哥布林": print("发现了野生的哥布林!") print(">>>>") time.sleep(0.5) print(">>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>>>>>") time.sleep(0.5) print("升级!") level += 1 print("当前等级:{}".format(level)) elif m == "野山猪": print("发现了野生的野山猪!") print(">>>>") time.sleep(0.5) print(">>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>") time.sleep(0.5) print(">>>>>>>>>>>>>>>>") time.sleep(0.5) print("升级!") level += 3 print("当前等级:{}".format(level)) else: print("发现了野生的40级直升经验果!") print("芜湖,舒服了,搞起,搞起。") level = 40 print("当前等级:{}".format(level)) break else: print("可以去打关卡BOSS了!") print("等级够了,技术不够,溜了溜了。") ``` ###### 注意: - else 与 while 平级的缩进方式。 - 如果是被 break 等机制 强制 提前 终止的循环,不会执行 else 语句。 ##### while循环嵌套使用 if 判断可以嵌套,while 当然也可以嵌套。但是建议大家不要嵌套 3 层以上,那样的效率会很低。 ##### 问题: ###### 问题一: 生成N个1~1000之间的随机数(N<=1000),N是用户输入的,对于其中重复的数字,只保留一个,把其余数字去掉,然后再把这些数从小到大排序。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201230132302461.png) 回答: ```python from random import randint s=set() try: num = int(input("请输入一个<=1000整数:")) for i in range(1,num): s.add(randint(1,1000)) print(s) l = list(s) l.sort() print(l) except ValueError: print("输入值错误,请输入一个<=1000整数") ``` ###### 问题二: 打印出所有“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数字本身。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201230132319192.png) 回答: ```python da = [] for i in range(100,1000): a = int(str(i)[2]) ** 3 b = int(str(i)[1]) ** 3 c = int(str(i)[0]) ** 3 if a+b+c == i: da.append(i) else: continue print("水仙花数有:") for l in da: print(l) ``` ###### 问题三: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201230132327524.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MjIxMTM1Mg==,size_16,color_FFFFFF,t_70) 回答: ```python print("Have you been studying lately?") info = input("Please enter the instruction(y/n):") a = 1 while a: if info.upper() == "Y": """当用户输入y的时候给出选项""" while 1: print("very good!", "What did you learn:", "1.python", "2.高数" ,"3.退出", sep="\n") i = input("Please enter the instruction(1/2/3):") if i == "1": print("python不错啊!") elif i == "2": print("高数啊?这也太强了!") elif i == "3": """当选项为3的时候退出系统""" a = 0 break else: """当选项不在范围的时候提示重新选择""" print("Error output instruction.", "Please input agin!", sep="\n") continue elif info.upper() == "N": """当用户没有学习,输出提示并退出系统""" print("Young man, Please study hard!") break else: """当输入除了y/n的其他值时,则提示输出有误""" print("Error output instruction.", "Please input agin!", sep="\n") continue ``` --- [1]: https://www.yidaimingjvn.xyz/usr/themes/Akina/images/postbg/10.jpg
Comments | NOTHING