内容正文:

好,同学们,我们今天给大家讲咱们的循环结构。大家可以看一下这个目录,我们是从这五个方面来给大家去讲。首先第一个是我们的这个for循环Y循环循环嵌套循环控制语句,以及我们这个列表推导式。这个列表推导式对于我们后续的一些解题来说的话,代码量非常的少,大家可以重视一下。好,首先第一个我们讲的是一个for循环,我们要知道为什么要学习循环。因为我们有的时候在解决一些问题的时候,不会像前面我们学的那个分支结构,只有一层。我们可能会要去循环周而复始的去做一件事儿。而我们的循环它就能够满足我们这方面的需求,就是能够一直循环执行某一件事,然后直到满足为止。我们的循环它其实也就分为由循环条件和循环体两部分组成的。首先我们来看第一个for循环,咱们的for循环常用于遍历我们的这个字符串、列表、元组、字典集合等序列类型,只要是序列类型就可以了。那么我们遍历的原理是什么呢?就逐个获取序列中的各个元素。咱们首先来看一下这个NS流程图。首先我们程序从这儿开始到咱们列表中,判断元素是否还有。如果是有的话,我们就取出下一个元素,执行一下我们的语句块。执行完之后我们再回到这个序列中去取下一个元素。如果这个元素有的话,我们继续取出来下个元素,那么再执行下我们的语句块,周而复始,直到咱们这个序列中的元素取不到为止,就是结束了。那么我们就是从这儿结束就可以了。好啊,这里面的话我们看一下右侧的这一个语法结构。首先我们这个是for,这个是我们的迭代变in这个for in这两个关键字大家一定不能丢。然后再是我们的这个序列,这个里面是我们的这个循环的语句块,这里面还有一个else这样的语句,大家有看到就是用中括号括起来的。我们在pass的语法里面,但凡是使用中括号括起来的都表示可选项,就是这个语句它根据实际情况可有可无,那么什么时候执行else语句呢?当我们后面去讲到我们的这个循环控制语句的时候,会跟大家去具体去讲,我们现在暂时不讲这个else的部分。好,那我们来看一下这个里面有一个例题。首先这是有一个我们的S的这样一个列表,我们需要对这个列表中的元素进行一个遍历。大家看一下它的遍历的这个原理是什么。首先我们从张三开始,因为张三是第一个索引为零的元素,然后他会把这个张三的元素再付给我们的name,从而我们在这儿打印出来。好,那么取出再取出下一个李四这个元素,再付给我们的内蒙,那我们再给它打印出来。再是从我们的这个列表中取出王五这个元素,再付给我们的这个变量name,然后再打印出来。到最后我们这列表里面的三个元素就会全部取完了。取完之后标志着我们这个for循环已经结束了。我们这个循环里面的话,它只循环了三次,因为这里面有三个元素。好,我们把这个代码拿到我们的这个PR产品来去给大家演示一下。好,这样的话我们这里面的三个元素就分别被打印出来了。也就是说我们这个for循环的一个循环次数是由我们这个列表中的元素来决定的。好,再看我们的这个,有一个重要的range函数,那么学习for循环我们就不得不提到我们的这个range函数。这个range函数主要是为了方便生成一些整数的一个序列。我们这个pens on中的一个range语法格式,大家可以看一下。首先这个里面是一个start,是我们的起始,然后这个stop是停止。这里面还有一个步长,大家也可以看一下,它是中括起来的,表示这个不查它是可选项。好,我们来看一下它的一个参数说明。首先这个start它是技术是从stop开始的,那么默认是从如果我们不指定的话,它默认是从零开始的。比如我们这里面的range 4,那么我们的这个四它是不包含的,这个俟其实是结束的。我们这个range函数大家要记住是按照数学里面的说法是左闭右开。也就是说右侧这个stop它是不支持的,它是不包含的那比如说我们这边的rent 4,它所产生的序列是0到3,我们来给大家演示一下。For r in range 4,我们把这里面的元素给它打印出来给大家看一下。好,大家可以看一下,这里面产生的是0123,它并不包含这个4。所以我们如果说不指定起始位置的话,它默认是从零开始的。好,然后再看我们的这个step stop。Stop的话,我们刚才讲了它是不包含的。比如说我们的0到4,它所产生的数字就是0到0123。好,再看我们的这个step步长,这个步长的话是默认为一,也就是说我们不指定的时候,它默认就是唯一。比如说我们这里面的那个range 0逗号4,它其实就等价于我们的零逗号4逗号1,也就是说步长是唯一,那么步长也可以为负数。一般步长为负数的话,它表示的是倒叙。比如说我们给大家举个例子,就是这里面的话它其实就是倒序5到1。因为它是不包含零的,所以就是五再加一个值是5点14,再加一个值是4减1是3,一直到我们的一结束。比如说我们如果要做一个倒计时10秒的一个小程序,那我们倒计时10秒我们来看一下。我们首先第一步是导入我们的这个碳模块。第二步的话我们就是通过这个range循环range函数,起始是倒计时10秒。我们先是其实是10,我们刚才讲了它是不包含这个结束位置,那我们是零,然后步长是一好,大家先看一下它的这个打印,看看是不是我们的这个十大家,可以看一下是十到我们的这个一对不对?好,我们这时候在一个tom点4类别下一这个sleep这个函数是我们这个碳模块里面的,它的单位是一秒钟,我们来看一下效果。好,这我就不给大家继续执行下去了,反正就是倒计时10秒钟。好,这个就是我们的这个软件函数,在我们这个呃呃后续的使用中,软件函数还是比较重要的。再看我们这个range函数的一个应用,我们要如果输出1到5的话,我们直接就是-2 range 1逗号6。因为不包含因为不包含我们的6,所以说产生的是我们的这个1到5的元素。再看我们的这个计算,1到10的累加和,我们也可以把1到10的十个数字的放到列表里面去,然后再通过for循环遍历。当然大家想想那样的方法不可取,如果我要计算1到100的累加和那样肯定不行的那我们就要用到软件函数,通过软件函数能构造出1到10的十个数字,然后再进行一个累加。这里面我们累加的话都是有一个变量,起始值为零,然后再做一个累加就可以了。最后这样的话我们就算出来了这个1到10的累加和那我们要如果倒叙输出数字10到1。刚才其实我们给大家举个例子是倒叙倒计时10秒钟了。其实也就是说for in range 10起步零结束不包含0,然后步长是负一。这样的话就是倒计倒倒叙输出10到1的数字。在这里面我们要计算1到100之间的一个基数的累加,和同学们这里面其实有两种方法,我们可以巧妙的。第一种方法就是巧妙的去通过range的这个步长二构造出这样的一个公差。比如说我们起始为一,那么下一个值就是三,再下一个值就是5。也就是说我们就能拿到这个1到100之间所有的基数,从而做一个累加和。我们再给大家讲一种方法,就是我们通过force负的一个判断。比如说for 2 in rent下,我们的1到101,我们在这里面做一个判断,如果是I能被我们的二取数等等于一,那么这就是我们的基数。我们刚才讲了,如果我们要求的加和必须有一个变量是起始值为零。然后在S加等于一个I这里面我是有一个简写。其实它的全写的话是我们注释的右侧的这个部分,大家应该是知道的。我们最后再打印下我们的S就可以了。我们运行一下,我们把上面代码注释掉。这样的话我们这个1到100之间的这个基数的压合就是2500好。那么这样的话我们这个就讲完了,我们等到把外循环以及我们的列表推导式讲完,我们会整体的再去给大家讲一下我们的这个练习题,去加深一下大家对这种循环的一个理解。好,再看我们的这个Y循环。这个Y循环,它要比for循环相对来说要难一点。因为Y循环它没有像for循环这样的好用的一个range函数,因为我们的range函数能够构造出这个起始位置以及我们的结束位置,对吧?还能构造出我们的步长,那我们的这个roy循环就没办法配合使用range函数。因此我们在后续学习外循环的时候,大家会发现它要我们手动去构造出一个起始位置,以及我们要给他一个结束条件和我们的这个啊补偿。好,我们首先来看一下这个Y循环的一个定义。Y循环的执行顺序是我们判断这个条件,如果条件为初就执行这个语句块。如果条件为false就不执行这个语句块。然后到执行语句块2,大家可以看一下这个右侧的一个我们的这个语法结构。就是说当我们这个条件表达式成立,就会执行语句块一。在执行完语句块一之后,再回到我们的条件再进行一个判断,直到我们的这个条件表达式不成立,则退出我们这个外循环。这里面也有一个就是我们的这个else子句。这个也是一样跟for我们放在后面讲,我们的这个调循环的控制语句,会跟大家去讲这个L4词句。好,这样的话我们就讲完了这个Y循环的一个语句的一个语法。接下来我们来讲一个练习题,输出0到3的整数。这个题目的话其实如果放在我们的for循环里面是比较简单的。我们直接通过range 0到我们的4就可以了,是不是?但是我们刚才讲了这个外循环它是没办法去使用这个软件函数的那我们就要通过构造起始为止。因为你让我输出这个0,那我就构造一个起始的变量,是从零起步的,而且我们要输出到三结束,那我们就得构造出一个这样的一个条件,那就是N小于等于四小于4。其实我们这里面也可以是N小于等于3,也就是我们的这个N小于等于三也是可以的。这里面的话这个条件也是没有什么问题的。我们接下来去打印出我们的这个数字就可以了。注意如果说没有下面的这一个自增的这样的一个代码的话,我们这个Y循环就是一个死循环。但对于新手来说,很容易在利用这个Y循环的时候会写出一个死循环,原因就是因为它少了这一行代码。大家想想,如果没有这行代码的话,那么我们如果N为00是小于四的,进来之后就一直打印0小于四这样的一个语句。它就不会说是N由0到1,在1到2这样的。只有说我们有了一个这样的一个自增。比如说我们在这儿00是小于4,打印出零小于四这样的语句之后,再到到这儿来的话,我们的这个N就变成我们的一了。所以这一行代码是非常的重要,它能够决定你这个外循环是否能是一个死循环。好,那么我们再来看一下我们这个Y循环的一个练习题。首先第一题我们这个输出整数1到5,我们来给大家演示一下。我刚才讲了,就是如果我们要输出这个整数的话,我们该怎么去做?我们把它放大一点,首先我们有一个初始的起始的值为我们的这个一,这里面的变量无所谓,你也可以用其他的一个变量也行。YI小于等于5,你也可以是小于六也没关系。那么print一下我们的这个I注意在这里面我们一定要给我们的I有一个自增。这里面我们可以比对一下,这个其实就是开始,然后这个就是我们的什么结束。好结束条件。那这里面的话是不是就是我们的这个自增?其实这个自增的话就类似于我们软件函数里面range函数为什么好用?是因为你指定的起始在指示令结束之后,它会由起始到结束自动去去往后面去去取值。而我们这个Y由于没办法配合使用range,所以我们只能自己手动去构造这样的一个自增或者自减的一个变量,才能够退出我们的这个Y循环。所以大家在写外循环的时候一定要注意。好,再看我们的这个无限循环,我们Y循环里面这是它的唯一的特点,就是我们可以轻松的构造出我们的这个死循环。Y处的话这个条件是永恒的。当然这里面除了触以外,你可以给个一给个二,只要是波尔值横为处的就可以了,这里面我们习惯能用Y处。这就是一个死循环,而这个是负循环没办法做到的。我们的这个外循环它的一个特点就是能够构造出无限循环,而我们的负循环做不到。好,再看我们的这个第三题,计算1到10的累加和。我们来看一下这个题目。首先我们的I为一起步,S等于0,这是求累加和的一个标记。如果你要求累加和的话,你得有一个变量,起始值为零。有了这个起始值和我们的这个S为零之后,我们得到一个结束条件。这里面我是I小于等于10,你也可以是小于11,也是没有问题的。好,然后再是S加等于一个我们的I好,加完这个一之后,你下一个是不是要加二了,那我们就I加等于1,那这样的话就计算出我们1到10的累加和了。再看最后一题,计算1到100之间的奇数的累加和。我们在做这道题目之前,我们可以带大家回顾一下,如果是用我们的这个for循环该怎么写。我们首先负二用我们的这个range一下,1到100,那我们就1到101逗号二这样的话,然后再是一个我们的这个S初始值为零,再记再做一个累加就可以了。这样的话其实使用for循环很快就能够写出我们1到100之间基数的累加和对不对?好,那接下来我们来看一下如何使用Y循环能够实现上面的代码。Y循环它没有running函数,那我们就得构造它的一个起始值。一好,然后S为零,这是都是一样的。那接下来就是我们的I小于等于100。好,那这样的话我们再给他这个I相加,这时候我们已经给了开始的以及结束的,其实就差这个补偿了,对吧?那这里面的话我们也可以构造一个I加等于二就可以了,这样的话是加S就能够计算出我们的1到100的基数累加和。这里面我再给大家介绍一种方法,什么方法呢?这里面我们是通过这个步长,就巧妙的构造出我们的基数。我们其实也可以通过这个if来去条件判断也行,比如说I其实是唯一S为我们的零Y我们的这个I小于等于我们的100。我们这里面做一个判断,如果我们的I能被我们的二取数为一,我们就做一个累加。好,然后再是我们的I叫做就可以了。这个方法比上面的方法稍微会多个一行代码,但其实也可以,大家可以看一下,效果都是一样的。好,那么我们讲完这个练习题之后,我们后面也会有关于外循环的加强训练的练习题。我到时候下一节我们会给大家去讲,我们再来讲我们的这个循环签到。这个从字面意思上来理解也很好理解,就是嵌套。就是我们这个for循环里面可以嵌套我们的这个for循环,然后我们这个Y循环里面也可以嵌到Y循环,我们的for里面也可以嵌到YY里面也可以嵌到for,都是可以的。那么我们来看看它的一个练习题。首先第一个经典的练习题就是打印我们这个什么99乘法表。这个我们来看一下该怎么去写它,我们来放大一下,大家首先来观察一下这个绝对乘法表的特点。比如说第一行只有一颗,只有一个表,那个计算公式,第二行的两个计算公式,第三行三个。我们可以把这个题目稍微做一个简化,大家可以看一下怎么去做一个简化。我们来给大家仔细的去讲一下这个题目,刚才我讲了第一行是一个公式,第二行两个公式。那我们可以把它假设是一个星星,就是第一行一个星,第二行两个星,第三行三颗星,那我们就可以fine range一下。首先是九行,那我们就1到10,这个是我们的控制我们的什么很好。然后再是我们用另一个循环的去控制我们的这个列。这个列的话同学们我们来一起看一下它的一个规律。就比如说我们第一行一颗一颗星,第二行两个星,第三行三颗星,那也就是说我们这个函数跟我们的列数是成正比的那我们就是一到我们的这个I加一之间,注意一定要加一。大家想一下为什么要加一?假设我们的I的值为我们的三,也就第三行是要有三颗星的,对不对?你如果是三的话,大家想一想这里面是不是只有两颗星?那我们是不是得1到4才行,才是产生3,就是循环三次,不就是三颗星。那这里面所以说是I加1,大家这一点要注意。好,接下来我们在这里面去通过循环构造,这里面我用到一个是我们的F字符串,就是在字符串的前面加个F接下来我们就可以构造出这样的一个公式。你看我们这个,接下来我们先不打印这个公式,我们来打印新给大家看一下。我们打印新的时候就是空一格不换行。那等到我们这一列的星星打印完之后,我们就得换行了。我们这里面这个print就是有换行的功能。因为我们的print里面的话,它是有一个这样的一个参数N的,它自带换行的功能,所以空的这个print 90%以上的可能性都是润来换寒的。我们来看一下这个效果,这样的话我们已经把这个星星打印出来了。星星打印出来之后的话,我们现在要做的是把里面的每一个星星星转换成我们要这个计算的公式,对不对?好,那我们来改造一下,在这里面改造一下。好,大家可以看到这个东西是不是就看着很像我们的这个99乘法表里面的某某一个公式,对不对?我们再来观察一下它的一个特点,就是比如说我们拿第四行来说,第四行的话它第二个参数,比如说1乘4 2乘4,3乘4 4乘4,这个四是不是都固定的?这个四是不就是我们的这个I,对不对?我们的I就是函,也就是说第五行你看这个第二个是不是五都固定的,六也是固定的。好,再回到我们第四行,第一个参数一,第二个参数二,第3334。你看1234,也就是说呈一个递增的状态。比如说第五行也是一样,12345,也就是说第五行的话它递增也不会超过5。而我们这里面的话有一个这样的一个参数,就是我们这样的一个变量G正好是满足这样的一个规律。比如说我们的I为三的时候,它是不是就打印出123,那么I为四的时候是不是就打印出1234,对不对?那我们这里面填的就是我们的这个界,然后这里面的话再是我们的借乘一个I就可以了。好,那么我们来试一下,这样的话其实我们这个局势处罚表已经完成了。当然细心的同学应该观察到了,就是咱们这列的话没有对齐是不是?而我们之前也学过,老师应该教过了咱们的这个转因子符里面有一个叫水平制表符,它就能够对齐输出,把这个空格改成杠T我们再来试一下。好,这样的话我们这个标准版的这个局域乘法表就已经打印出来了。所以大家在这个打印局乘法表的时候,你可以像我一样,先把它简化成打印星星,然后再去由星星转换成打印我们这个公式就可以了。好,那么我们再看我们的这个第二题,输出这个图形。这个图形我们来看一下的一个特点就是第一行是我们的这个一颗星。像这类题目我们该怎么去做?我们也是要去通过分析找到规律,然后再去打印这个图形的。我们的盘子里面的很多题目都是找规律。我们来一起看一下。首先我们的这个函,然后那个星星数,我们就用这个来表示星星柱。比如说第一行它有几个星呢?一个星,第二行是三个星,第三行是五个星,那第四行就是我们的什么七个星。大家数一下,1234567899个星,这是第四。第五第四行是七颗星,第五行是九颗星。好,那么我们仔细观察,它的一个特点就是它的星星数。如果我们经常找规律的同学应该一眼就能看出来,它的一个最浅显的规律就是我们的假设我们的函的变量是我们的I那应该是2乘1个I再减掉一个一。比如说我们的I为三的时候,2乘3是6 6减1,是不是应该5?对吧?好,那这个规律就是我们的星星数的规律。好,我们就可以先把星星打印出来,我们是几行?123455行就是1到6,是不包含6,所以是打印五行。我们这个星乘以一个我们刚才总结的这个规律,我们把它拿过来。好,这样我们的星星数就打印出来了。此时我们还没有完成这个图图中的一个目的,因为我们还要打印这个星星前面的这个空格,我们来可以看一下这个该怎么去看。那么我们做一个辅助线下来,做一个辅助线讲,大家看下,我们来再来总结一下它的空格数。比如说这里面我们给一个空格数,那第一行我们做一个辅助下来是不是应该是1234?第一行是很明显是四个空格,那第二行大家可以做个辅助线下来,是明显是三个空格,对不对?是三个空格。来第三行的话是啊两宫格。第四行一个空格,第五行是零个空格。我们把这个函和我们的空格数相加,始终等于一个五。那我们就知道了是应该是五减掉一个我们的爱就行了。好,接下来我们再去打印我们的空格数,5减掉一个二就可以了。注意我们打印完空格之后,是不是紧接着后面就应该打印星星,对不对?所以我们这后面不能让它换行,我们就直接end指定一个空字符就行了,表示不换行。好,这样的话我们这个题目就做完了。那么我们等到把下面的这个循环控制语句讲完,我们还有一个列表推导式讲完,就给大家去再去用例营体系去进行一个加深。好,接下来我们来讲一下我们的这个循环控制语句。前面我们埋了一个伏笔,就是我们的这个,大家可以看一下,我们的这个for循环有一个as子句,而我们的这个Y循环也有一个else子句。那这个else子句什么时候能用上或者说有什么用呢?我们来看一下这里面,首先我们要了解这个break,continue, pass这三个循环控制语句。首先第一个我们要记住它的一个关键词,就要退出本层循环。这里面有很多语句我就不带大家读了。总结一下就是跳出本层循环直接终止了我们这个循环语句了,就不会再去执行这个循环了。好,再看我们的continue。Continue的话它是跳出本次循环。也就是说就比如说我们循环里面有五次循环,它只是跳过这其中一次循环,不会对这个循环产生终止。那我们continue后面的这个语句它会跳过,因为我们要直接执行下一轮,那么continue后面的语句那就不会被执行了。好,我们来给大家去依次讲解。最后一个pass我们就给大家讲一下,它特别的简单。就是如果你要写什么东西,没有什么想法,或者说只是为了给他占个空间的话,我们就可以给个pass空语句表示什么都不做。我们他说是为了保证我们结构的完整性的,我们后面举例子给大家去说好。首先我们来讲一下break这个例子,比如说我们有个需求,就是1到10之间,就是我们比如说负二音下,1到10这里面不包含是我们要求的是打印出我们的这个五就不能再打印了。那我们可以这样,当我们的I为我们的5的时候,我们就可以退出循环。那这样可以大家可以看到我们的这个I打印到5之后,满足这个已有条件,那么这样的话就不再打印了,是不是?所以我们这个break就直接就终止了我们这次循环。再大家再看一下,假设我就是把这个print把我们的这个print I放在我们的下面。好,我们可以这样,就是我们把这个continue把这个break改成continue。就是假设我们需求就是不希望打印出5,那当我们的是五的倍数的,当时五的时候,满足这个条件,我们就执行这个肯定6,那么下面这个代码就不再执行了,为什么?因为我们比如说执行到了continue之后,它就会从这个74行直接就跳到了我们这个七十二行去执行我们下一次的循环。那么continue的下面的代码都不会被执行,很显然这里面捂就不会被打印出来。大家可以看一下,你看这里面是不是缺了5。比如说我现在不想打印5或者说什么7,那我们就是I等等于5或者是I等于7就可以了。这样的话我们的武器就会没有被打印出来,这就是我们的这个continue的一个特点。再看我们的pass,pass的话它是比如说我们要如果写一个这样的一个循环,假如我这里面什么都不想写,那如果你什么都不想写,你直接这样空着,那肯定是报错的。比如是不是你看这都已经有一个红色的线了,那这时候我们就得用一个pass填充一下。就相当于保证了我们这个for循环的一个完整性,这就是我们的这个pass的一个作用。好,我们再来回到刚才的那个我们的这个for循环,去讲一下我们的到底这个else是有什么作用。好比如说我们看一下这个语句,就比如说如果你这个break里面,如果你这个语句块一里面有了break子句且被执行了,那么这个else子句是不会被执行的。反之,如果这个语句块里面没有break或者有break但不执行,那么else是子句是正常执行的。我们来给大家举个例子,比如说for I in range下我们的这个1到10。好,那么如果是I等等于我们的十的话,我们就是break一下,然后else分析一下。Hello, 大家可以看一下这个语句,这个代码的话,这个hello会不会打印出来?大家想一想会不会,其实是不会,为什么呢?这里面虽然有break子句,但是大家想想这个爱能到10吗?它不包含10,它是不可能到达十的。也就是说这个条件它是不可能成立的,不可能整理的话,那break也不会被执行。Break不会被执行,else就会被执行出来。我们来看一下,大家看到了吗?Hello, 被打印出来了对不对?好,如果我把它改一下,改成9,那如果是九的话,大家想想能不能执行这个else里面的字句?好是不能的。因为这个阿尔韦九是一定能到达的那一定能到达的话,肯定会被执行break。那么执行了break,那么这else里面的这个子句就不会被执行了。大家看一下是不是L这个hello是不是没被打印出来。同样的,我们这个Y循环也是一样。比如说我们举个例子。如果说我们的I等等于11,break一下,else print一下。Hello, 我们把上面的代码给它注释掉。大家看一下这个代码,它这里面的话其实也是一样,这个里面的I是小于等于10,而我们这个I是小于是等等于11,显然是不满足的,是不会到达的那这个break其实是啊虽然有,但它没被执行。那这个else是可以不可以执行的?大家稍等一下,我来看一下这个里面的话应我们来再分析一下,把这个I如果是小于等于10,那么这里面我们有一个少了一个行代码,就是这个大家可以注意一下,我这里面少加了一个就是咱们刚才的这个死循环了。我们这个Y循环的话一定不能丢了,这个I加等于一对不对?好,我们再来试一下,大家看到了吧?这个hello是不是被打印出来了,原因就是因为这个if它不满足条件。那如果我把它改成7,大家看一下是不是没被执行的,因为这个义务是一定能到达七的,一定到达七是一定会被执行break的。只要它执行了break,那么else就不会被执行。这就是我们这个for else和YS的一个结构的一个特点。其实这个结构的话在我们后续比如说判断输出,或者说某些题目里面能够有一个非常好的效果。就是能够大大缩减我们那个代码,就是利用这种结构的。好,那么我们再回到我们的这个循环过程语句。这个循环控制于我们就讲到这儿,我们接下来再再讲几个例题给大家加深一下。一印象。比如说判断素数,我们要知道什么叫判断,什么叫素数。素数的话就是只能被一和它本身整除。比如说我们有一个数字七大家,想想七的话,你在1到7之间,你是不是在这中间的位置,是不是找不到一个数能把我们的七整除掉,23456是不是都不行?那除了一和7,它本身能把七整除是不是都不行?好,那么我们还要了解的依据是二是它最小的素数,这个答案这种常识应该大家是要知道的。就是什么是素数?素数就是只能被一和它本身整除,且二是最小的素数。那么素数其实就是质数。如果说下次说质数的话,大家应该也要想到是素数。好,我们来看一下这个题目。首先让用户从键盘输入我们的这一个数,它把它转成整形了。那我们再立个flag,这个flag就是一个标记。就是我们可以假设认为你无论输入啥数,我认为你都是啊咱们的素数,就假设。好,接下来我们就要进行一个验证了,我们for r in range 2的W之间,其实我们按照我们的定义就是一和本身能把它整除。在一和本身之间没有数能把它整除。那我们就在二到单位之间去找,看看有没有一个数满足。在这里面我们做了一个判断,如果说我们的number和我们的I取数不等于0,不等于零是正常现象,那我们就直接pass或者说continue都可以。然后的话如果说假设执行到了else,说明在这个里面肯定是有一个我们的这个number能被我们的取数的那对不对?如果是啊就是等于零的话,那么说明我们这个假设的这个就是错误的。我们不是我们的false,不是我们的素数,那我们就要把这个flag置为我们的false,同时退出循环。那么最后我们来判断我们的flag标记就行了。如果flag为true就是输出,反之就不是输出。这里面我们为了举例子才这样去弯弯绕。我们没必要在这里面去说判断我们的number不能被我们的跟我们的二取数不等于0。因为我们正常情况的话就是不等于0,对吧?就不能被它整除,对不对?但是这里面他故意这样写的,只是为了给大家去讲解这个控制语句。我们后面还有一个判断输出是一个比较方便大家理解的方法去做的。好,那我们来看看这个后面的练习题,这个我们在下一节课来继续讲。好,这节课我们就先讲到这里面。
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。