内容正文:
好,接着我们来学习最难的这个循环结构循环结构。我们循环结构有for循环和while循环两种。我们学习这个for循环,我们来看一下什么叫循环结构。在现实生活中我们经常会看到工厂里的机器会反复的组装零件,家里的扫地机器人可以循环的清扫房间,计算机可以批量处理多个文件。这种重复同一类操作的背后,其实就是通过程序的循环结构来实现的。Python中循环结构分为两种,第一种是基于序列范围和次数的for循环,第二种是基于条件的while循环。我给大家举个两个例子,假如说使用造型来组装零件的话,就是让机器反复组装1000个0件,它知道范围和具体的次数,而YL循环它就是让机器反复组装理念,直到完成订单。这个时候?机器重复做做多少次不知道,但是我知道条件什么完成订单,所以说就是一个知道具体的循环次数,一个不知道具体的循环次数,但是知道循环条件我们后面还会讲,首先我们来看一下for循环拍的for循环。Python for循环是基于序列范围次数循环for循环变量因序列后面跟冒号循环体,for循环之后必须加循环冒号考的时候他喜欢搞改错,特别是冒号,考试后先找冒号。第二个循环体前必须要有缩进,这个循环体跟我们前面讲那个选择以后的语句组是一样的,就前面有缩进。你比如说程序一这个print video它前面有缩进,所以说它就是for循环的循环体,那么循环体可以是一行代码,也可以是多行代码。当循环体是多行代码时,多行代码必须遵循相同的缩进。你比如说这个程序二,这二和三它都有缩紧,而且缩紧一样。所以说它两个都属于我们for循环的循环体。那么这个for循环它怎么执行呢?我们序列中会有很多元素,它会把这个元素依次取出并复制给我们的循环变量。比如说这个一二三有三个元素,它先取一再取二再取3,每取出一个元素只有执行一遍循环体。执行完循环体之后,再去取出第二个元素,再执行,再取出第三个再执行。你看它就形成了一个循环,形成了一个闭环。那么什么时候这个循环体结束呢?等我们序列中的元素全部取出的时候,没有元素可以循环了,我们这个循环体就结束了。这就是我们循环,有元素就是就循环,没元素就退出循环。我们来通过程序集来看一下,我们这个序列中有三个元素,它会依次取出并复这个循环变量。也就是说Y6首先等于一是吧?每取出一个元素就执行是循环体,它的循环体是第二行,它会print y6,Y6是1,所以说它会打印一。打印一完成之后,它就会取出第二个元素赋给Y6,那就是打印2。然后取出第三个元素,那就打印三对吧?再取没了三个元素取完了,取完之后干嘛?循环体结束,执行循环体后面的代码那就是够的,所以说输出结果就是123 go的那第二个也是123,也是V6,但是循环体不一样了,我让Y6等于一的时候,对吧,它会执行一遍循环体。但我循环有两个函数,有两个语句,所以说这两个语句都要执行,它就是1 go的那二的时候就是2 go的,三的时候就3 go的那现在我有个要求,假如说我想输出1到1000,1到1万,1到100万怎么办?我难道有123456789一直写到1000吗?那写程序有什么意义,对吧?那这个时候我们可以通过软件函数一逗号1001,你就会发现它输出1到1000了。你输出1万,也就是加个零的问题。乱写函数它是有什么用呢?它可以生成一个从start开始到stop结束,但不包含stop,且间隔值为step的一个数字序列。这个间隔值就像你数学中的一个公差,start代表起始,stop代表结束,但不包括step代表间隔值。你比如说乱点1,逗号6,逗号一就代表生成一个从一开始到六结束,但不包含一且数字间隔为一的数字序列,那就是12345不能包含6。那二逗号12,从2S到12点结束,但不包含12且间隔为二的那就是246 80,不能再加二了,再加二是十二了。那除了这个三个参数的情况,我们还会有两个参数和1个参数情况就省略了。如果是两个参数的话,那默认间隔就是一。比如说乱点1逗号5,那就相当于软点1逗号5。逗号一从一开始到五结束,那部分含五且间隔值为一的那就是1234。我能问你3927,那逗号一间隔为一,那就是3456。这是这两个考试中最常考的,就是两个参数的情况。还有一个参数的情况,它连起始的他都省略了一个参数,它起始默认是零,间隔默认是一,那就是零逗号5,逗号一从零开始到五结束,但不含5,且间隔值为一,那就是01234,你要区分开来,特别是这个结束值是不包括的那接下来我们来总结一下for循环的使用场景。第一种是基于序列的循环,这个序列可以是固定的列表或者是固定的字符串。如果是列表的话,它就逐个取出里面的元素,如果是字符串的话,它就逐个取出里面的字符。这跟我们前面讲的那个索引有点像,列表的索引是元素,字符串的索引是字符。第二个是基于范围次数的循环,这主要是通过我们的软件函数来实现的。比如说软件3逗号7,那就是3456那乱点一的话,我那就1234,就代表这个循环会执行四次,它会输出四遍够的,这就是一个是序列,一个是范围次数。我们正常来说考的时候,他一般都会考这个范围次数,因为这个场景用的比较多。那我们下面来看这个题目,如图所示的判断代码运行时循环执行的次数是多少,这是个菜单的意思里面有四个元素,问你它循环的次数是多少呢?循环的结果就是4,那大家应该选择B,没难度。我们讲了for循,如果是这个列表的话,它就会逐个取出里面的元素进行赋值,然后循环然后取出然后赋值来循环。我们有四个值,所以说会取出这四个,执行四面循环体。答案就是B第二个,下列程序的运行结果是哪一个?For value in range 1逗号4,print video,range一的话是产生的数字序列是多少呢?是一二三,它没有4,从一开始到此结束,在播完时且间隔值为一,所以说答案选择我B那接着我们来看这个第三题,第三题下列程序的运行结果是sum等于0 for I in range 15,sum等于sum加i present sum。那我们找程序,首先第一个看它的循环,这个序列一逗号5就是1234了。1234它的循环体就在,因为就这一行有缩进,sum等于sum加,循环完成之后再输出这个sum。问你是789是哪一个?可能说这种题算是难度比较高的一个题,能做就做做不出来你蒙一个也行。我们现在来做一下,我们RE的循环范围是1234 sum等于sum加IE,将sum加I的值赋值给我们的sum。当I等于一的时候,sum等于多少呢?等于sum加IE,sum基础值是0,I是一,所以说sum就等于0加1,结果就是我们的一。当I等于2的时候,等于sum加RE sum是多少?在上一步已经变成了一,IE是2,所以说sum等于1加2,结果是我们的3。当IE等于三的时候,上面就等于我们的3加3,结果应该是我们的6。当这个I等于4的时候,sum等于sum加上M在上一步已经变成六了,那I是4,所以说sum等于6加4,结果是我们的十。我们就四个数字后面没有了,所以说这个循环体已经结束了,就输出这个sam结果就应该是我们的10D你考的时候可以这样画一下,但其实这题也很简单,你会发现我上的初始值是零,每次都把阿姨这个加进来,其实就是零加。第一次加一,第二次加2,第三次加3,第四次加4,就是0加1加2加3加4,结果就是我们的十,这也是一种巧的解法。但是你们现在对放循环使用的那个不常用,你们考的时候就可以这样列。如果你能看到,你也可以这样加。那接下来我们来看这个非选择题,非选择题部分判断题十分的。假如有一张无限大的纸,其厚度为0.1毫米,请问对折那然后对折一次纸的厚度增加一倍。假如这张纸连续对折是始终有可能的,你就不用管它。那有没有可能呢?问对折30次后,纸的厚度为多少米?小智使用pyper语言解决该问题,他在编译程序时遇到一些问题,请你帮助他修改程序。也就是说数值是0.1,每次是翻倍。第二次0.2,第三次0.4,问你一直到34,它是0,它是多少米呢?我们单位是毫米,这里是米,所以说还要转化一下程序的最新运营结果。34是1万多米对吧?刚开始0.1,对着30就变成一万多米,这个十万多米了,所以说这个翻倍的效果还是非常惊人的。我们解题思路通过分析题目可知,求对折30次厚纸的厚度,其实就是什么重复30次纸张厚度翻倍的操作。因此我们可以使用循环结构来解决,且题目循环范围已知,可以使用的for循环,我们的for循环,它就适用于这个循环范围和次数已知的情况,这个题目就非常的适用,具体就如下,我们放循环有两个部分。第一个我们要确定循环的次数,序列到底是循环多少次。第二个我们要确定我们的循环体,我们首先确定循环次数,我们本题它是根据对折次数循环的。我们设对折次数为K我的K的对值34,那K的变化范围就是从1到30。那对应的pad语句那就应该是for循环变量是K那K的变化范围是多少?是1到30。我们可以使用软件函数生成一个1到3个序数字序列。但是要注意,我们最后应该是31。因为31你要写30的话,它就不包含30了,它就只到29了。所以说我们是1到31,然后确定循环体。我们每循环一次,我们厚度就在自身基础上乘2,我们设厚度为H则对应的python厚度在自身基础上乘2,那就是H等于H乘2。然后编写程序,首先我们要定义这个厚度,它数值0.1毫米。我们为了后面翻翻倍操作,我们在刚开始的时候,就把这个毫米给它转换成米,我们后面就不用转换了。然后接着我们要对折了,对折几次呢?对折30次是for k in乱点,一逗号31,这里应该填成31。每循环一次厚度就在自身基础上翻倍H等于H乘2,最后给这个H给它打印出来就行了。对折三次厚度是毫米,就是我们整个程序。接下来我们来看这考试题目,给你一个不完整的成语,两个错,一个填空H等于0.01,H是高度,然后K是次数,然后对折多数对折30次。所以说这里我们应该填多少呢?应该填31,你不要填30,因为不包含最后一个。然后每对折一次的厚度就在自身基础上翻倍,基础上翻倍应该是H乘2,不是H星星2。H升星星二是啥?是H的二次幂的,它是幂运算的,所以说应该把两个星改成一个星。然后最后我们要输出这个纸的对的厚度,是这个,所以说输出我们应该用print,人家错误犯的很明显,要把print改成input,那我们来总结一下本节课的学习内容。For循环是基于序列范围和次数的循环,只要考试的时候范围次数确定的,它就使用for循环了。那考的时候他题目都会给你,都会给你是for循环还是外循环的。你改错我们也不用什么判断,我们只需要分析就行了。然后这个for循环,它的格式循环变量已经乱解,冒号循环体语句。如果说序列中有元素的话,它就一直循环。如果说没元素的话,它就这个循环完成了,它就执行后面的我们的序列。还可以使用软件函数生成序列起始值结束值以及我们的间隔值,特别要注意这个结束值它是不包含的那就讲到这里,再见。