7.3.1 理解转向控制
迄今已经学习了条件控制和循环控制,在本节的内容中,我们将学习Python中的最后一个控制结构:转向控制。在学习新的内容前,先回顾下条件控制以及循环控制的定义:
条件控制是指根据表达式的值,来有条件地执行程序中的指令。循环控制是指让程序指令连续反复地执行
理解转向控制,可以从其字面意思来进行理解,转向即调转方向,在程序的执行过程中通过转向控制来控制代码的执行过程。在7.2节的内容中,其实已经接触到了转向控制,通过break来退出循环,就是一种转向控制。在Python中通过break,continue,return来实现转向控制,在以下几节内容中会分别进行讲解。
7.3.2 break-退出整个循环
break有打破和中途休息的意思,打破循环,意味着终止整个循环。通俗地进行解释,break是循环的终结者,类似T-800机器人一样的存在。
代码实例-大于2020就终止循环:
sum_of_numbers = 0 for number in range(1000): sum_of_numbers = sum_of_numbers + number if sum_of_numbers > 2020: # 如果sum_of_numbers指向的值大于2020,就退出循环 break
执行break退出循环,但只能退出break所在的循环结构,不会影响外层的循环。
代码讲解:
(1) 在循环中使用条件控制判断变量sum_of_numbers指向的值 (2) 如果该值大于2020,就执行break退出循环
代码实例-计算所有质数的和
sum_of_numbers = 0 for number in range(2, 100): for divisor in range(2, number): if number % divisor == 0: # %是求余运算符,如果当前number与_的余数为0 # 说明能为其它数整除,则肯定不是质数,执行break退出循环 break else: # 循环正常退出,说明当前number为质数 sum_of_numbers = sum_of_numbers + number
代码讲解:
(1) 在内层for循环中,当number为其它自然数整除时就退出当前的循环。 (2) 如果内层的循环系正常退出,说明不能被其它自然数整除,那么它是质数。 (3) 退出内层的for循环,不会对外层的for循环造成影响。
7.3.3 continue-退出本次循环
与break相比,continue只退出本次循环。假设在循环中一共需要执行5次,在第一次循环时使用break,那么剩下的4次循环都不会执行。在第一次循环时使用continue,那么会结束当次的循环,剩下的4次循环依然会执行。
代码实例-计算所有奇数的和:
sum_of_numbers = 0 for number in range(1000): if number % 2 == 0: # % 是Python中的求余运算符,如果与2相余后的余数为0 # 说明当前number是偶数,那么退出本次循环 continue # 显然地,如果number为奇数 # 就会运行下面的代码 # sum_of_numbers存储的是所有奇数的和 sum_of_numbers = sum_of_numbers + number else: print(sum_of_numbers)
代码讲解:
(1) %是Python中的求余计算符,如果数与2相余后的余数为0,说明是偶数。 如果为偶数,就结束本次循环。 (2) 如果不为偶数,那么就会继续执行循环体中的代码,计算所有奇数的和。
代码实例-输出一个倒三角形:
""" 倒三角形的如下图所示: * * * * * * """ # 定义变量triangle,用来存储打印的字符串 # 在Python中用英文引号括住的都为字符串 # 可以使用+符号对字符串进行拼接 # 在字符串中使用\n符号可以断行 triangle="" # 定义变量rows表示行数 rows = 3 # 定义cols变量表示列数 cols = 5 for row in range(rows): # 定义is_even_number变量,判断当前行是否为偶数 is_even_number = 1 if row % 2 == 0 else 0 # 定义started变量,判断是否开始打印*符号 started = 0 for col in range(cols): # 如果当前列的编号等于当前行的编号,就开始打印*符号 if col == row: triangle = triangle+"*" started = 1 continue # 如果已经开始打印*符号,且列的编号在正确范围以内 if started and col<=cols-row: if is_even_number: triangle = triangle + "*" if col % 2 == 0 else triangle + " " else: triangle = triangle + "*" if col % 2 != 0 else triangle + " " else: triangle = triangle + " " # 在字符串中拼接\n符号,可以进行断行 triangle = triangle+"\n" else: print(triangle)
程序输出为:
* * * * * *
代码讲解:
(1) 根据图形本身的特征,去寻找规律
(2) 很显然倒三角形中一共三行五列,使用*符号与空格符号来共同输出三角形
(3) 当列的编号与本次循环中的行的编号相等时,开始打印*符号,这个从图形本身的特征可以发现这个规律。
(4) 再者,倒三角形中每一层的*数目越来越少且居中,打印*的有效范围在列数减去当前行编号的范围之内。在Python中,break与continue都只能用于循环结构。在循环中使用了break,意味着非正常退出,不会执行else中的代码。
7.3.4 return-退出函数执行
编程语言中的return用来退出函数的执行,通常会返回一个值给函数的调用方。关于函数,会在第十四章中进行详细讲解。
对于break,continue,return等关键字的定义和用法,同学们同样可以在交互模式中进行查找, 不再赘述。
7.3.6 最具实力的小班培训
薯条老师在广州有开设线下培训班,小班授课模式,一班最多6个人。也可一对一授课,全程帮助你学好计算机,实现高薪就业。不在广州的同学可提供住宿,也可以报名线上小班,用腾讯会议上直播课。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python中高级爬虫逆向工程师就业班,月薪15K-25K,包拿Offer
(3) Python数据分析+商业分析+数据科学就业班,企业级项目实战,月薪10K-20K
(4) Python量化交易就业班,A股+期货+数字货币量化,月薪10K-40K
(5) Python机器学习+深度学习算法工程师,月薪20-50K
跟薯条老师学习的学生有拿到花生日记,林氏家居,南方电网,京东, 阿里等公司的offer, 学生的最低薪资有6K,最高薪资有18K, 平均就业薪资有11000。
扫码咨询薯条老师:
已有4位薯条发表了看法:
访客 评论于 2020-05-15 20:21:28 回复
老师,”triangle = triangle+"\n"else:“ 这句的”else:”是什么意思啊
访客 评论于 2020-05-16 06:50:48 回复
这是条件控制语句中的三元运算符,你需要复习下条件控制这一节
访客 评论于 2020-09-11 16:07:25 回复
计算质数代码的注释写错了吧,“# %是求余运算符,如果当前number与2的余数为0 ”应该是number与_的余数为0
薯条老师 评论于 2020-10-14 08:59:09 回复
是写错了,感谢指正,已修改