上一章已经讲过if条件语句,这章重点是循环语句:while、for
本章的重点内容
1、while循环
1)一般形式
2)break、continue、pass和循环的else
2、for循环
1)一般形式
2)示例应用:基础应用、元组赋值、扩展序列赋值、嵌套for循环
3、编写循环的技巧
1)range
2)zip
3)enumerate
以下为本章重点内容的详细说明
1、while循环
1)一般形式:以下是完整形式,注意分段及缩进
while test:
statements
else:
statements
以下是程序代码示例:数字a,每次增加1,直到等于b终止
2)break、continue、pass和循环的else
break:跳出最近所在的外围循环(跳过整个循环语句)
continue:跳到最近所在的外围循环的头部(来到循环的头部行)
break和continue 这两个是只有嵌套在循环中才起作用
为了一贯性,在上面代码例子基础上,增加break的语句,在使用中,while循环内部,要再增加判断语句,一般是用if判断,符合条件,则执行break,代码示例如下:
为了方便对比理解break和continue的差别和作用,同样的代码,将break替换成continue,看结果如何,代码操作实例如下:
代码虽然简单,如果能看懂,就理解break和continue的作用了
break代码细读:
首先a=0,进入while循环,判断a < b,是true,进入循环内部,
执行第一行, 执行完后,a变为1
执行第二行,判断与2相除,余数是否为0,如果是0,执行break,如果不是执行下一行,此处a=1,余数为1,所以执行下一行
执行第三行,打印a,此时a是1,打印1
再回到while循环的判断语句,判断a < b,是true,进入循环内部
执行第一行, 执行完后,a变为2
执行第二行,判断与2相除,余数是否为0,此时a=2,余数为0,所以执行break,跳出整合while循环,循环结束
以上,就是break代码的详细执行步骤,同样的逻辑,你可以自行细读continue,
continue的代码,可能会有一个理解的陷阱,在此提醒一下,从if判断语句看,好像是要打印偶数?其实执行结果不是,为什么不是呢?留给读者自行思考,如果不清楚,可以留言询问,会根据问题我再解答
pass 是占位符,直白的语言就是:先留一个位置,能使代码运行通过,以后会填上需要的操作代码,后面在讲到类的概念中,会更有使用的意义
循环else块:当且仅当循环正常离开时才会执行(也就是没有碰到break语句)
对于else部分,为了方便理解,我还是沿用上面的代码示例,稍作调整,下面是两种情况,第一种就是else语句部分,没有被执行,第二种就是else语句部分执行了
第一种情况:如下,因为执行了break语句,所以else语句没有被执行
第二种情况:如下,因为while语句都执行完了,咩有执行过break,所以else语句部分被执行了
2、for循环
1)一般形式:for循环也是先要进行判断,它判断需要两个因素,一个是target 一个是object
for target in object:
statements
else:
statements
2)基础应用,示例如下:
元组赋值,示例如下:
扩展序列赋值,示例如下:要注意结构的一致性
嵌套for循环,示例如下:b中的元素,是否在a中能找到相同的元素
3、编写循环的技巧
1)range:返回一系列连线增加的整数,可作为for中的索引
range在python3.x版本中无法直接使用,需要放在list中调用,如下:
利用这个基本的功能,结合for循环,可以起到计数器的作用,例如打印3次,如下
range函数可以与len函数结合使用,这样能对有序数据进行操作,例如如下两个示例,示例1是遍历有序数据,示例2是间隔一定距离选择数据,
示例1
在示例1的基础上,调整for循环语句,如下:
两个相似的示例,可以对比理解,如果上面的理解了,那下面的例子就更好理解了,在一个已有列表的基础上,每个元素增加2,具体代码操作示例如下:
range的使用,在其基本性质的基础上,有很多灵活的结合使用,需要从实际的需求中思考,多联系
2)zip:返回一系列并行元素的元组,可用于在for中内遍历多个序列
这句话乍一看,不知道说什么,没关系,从最基本的开始思考和探索,即可,zip是什么?可以通过代码了解,zip具体是什么,可以通过help(zip)了解,也可代码尝试理解,
通过探索了解到,zip也是需要list调用才能显示的,zip是把参数内的数据,按照序列,重新组合成元组,可以是1个,也可以是多个
利用其匹配两个数据的特性,可以做什么?可以构造字典,具体代码操作示例如下:还是承接上面的示例,将L1和L2构造成字典D
3)enumerate:同时生成可迭代对象中元素的值和索引,因而我们不必再手动计数
文字看不懂说什么,没关系,看实际操作代码,会更容易理解,
enumerate函数接收一个参数,接收的数据是有序数据,会生成索引+值得元组形式,也就是说,如果你需要用到索引,可以考虑enumerate
以下是一个简单示例使用,
以上,就是本章节的主要内容,对于编程的学习,书只是一个平台,重要的是自己对代码的操作,操作是学习编程的基本,也是根本!
《Python学习手册 第五版》 每章时间规划及完成进度
2019.11.25-2019.12.01 第01章,已完成
2019.12.02-2019.12.08 第02章,已完成
2019.12.09-2019.12.15 第03章,已完成
2019.12.16-2019.12.22 第04章,已完成
2019.12.23-2019.12.29 第05章,已完成
2019.12.30-2020.01.05 第06章,已完成
2020.01.06-2020.01.12 第07章,已完成
2020.01.12-2020.01.19 第08章,已完成
2020.01.20-2020.01.26 第09章,已完成
2020.01.27-2020.02.02 第10章,已完成
2020.02.03-2020.02.09 第11章,已完成
2020.02.10-2020.02.16 第12章,已完成
2020.02.17-2020.02.23 第13章,已完成
2020.02.24-2020.03.01 第14章,未完成