00:00
好,我们开始上课,那我们的第二章内容呢,到此为止就说完了,那接下来呢,我们来开始进入到我们第三章的学习,那我还是先来新建一个笔记的文件啊,我先来存储一下,嗯,我来在这儿呢,我们这儿创建一个新的lesson啊文件夹,我们来一个lesson lesson一个零三,呃,LESSON03呢,我的这个文件就是我们笔记,Re,诶,RA的me,点一个MDRD me.MD好,那这个文件创建完了,那这个就是我们的一个第三章。嗯,我们来看一下,我直接复制过来,哎,我们的第三章。哎,我们叫什么呢?叫做一个流程控制语句。好,流程控制语句是干嘛的啊,我们先来做第一件事,我们先来对这个流程控制呢做一个介绍啊,流程控制先做一个简介,什么叫流程控制啊,什么叫流程控制?那我们之前其实也写过不少的Python代码了,我们发现我们在写Python代码的时候,它有一个有一个什么特点,诶比如说我写一个print,我这来一个123,我这再来一个这个print,我这来一个HELLO2个print的语句,那他们的效果是不是就是先执行第一个,再执行第二个呀,哎,再执行第二个,也就是说它实际上我们Python代码在执行的时候是按照一个什么呀,自上向下是不是一行一行执行的呀,哎,一行一行执行的啊,所以注意这块我们来说一下我们的什么呢?哎,我们的这个Python代码,哎,在执行时,诶是诶按照。
01:55
啊,我们这个自上呃向下顺序执行的啊,自上向下顺序执行的,先执行第一行,再执行第二行,然后第三行,第四行,第五行,以此类推,是不是一直执行到最后啊,哎,它是自上向下一行一行的顺序执行的啊,顺序执行的,但是我们想想,如果我们的代码仅仅能这样顺序执行,仅仅能自上向下一行一行的执行,这玩意儿行不行?哎,很明显是不行的,这东西就像什么呢?就像是一个我们去开车一样,就像一个汽车一样,这汽车很牛啊,是吧?哎,加速也很快,外观也很漂亮,但是这汽车就有一个特点,什么意思?这汽车没有方向盘,它只能往前走,这车只能往前走,那我们想想,那这车还能不能开了,哎,就不能开了,因为开这车只要你一开上,他只能往前走,那很有可能你就直接就撞死了,对吧,所以同样我们只能往前走的车,我们。
02:55
不能开的,同样只能往只能顺序执行的程序,我们是不是也不能用啊,哎也不能用,所以这里边我们就需要干嘛,哎,我们就需要改变我们程序的执行顺序,那什么呢?那这样就说到了我们的流程控制语句,诶通过我们这个流程控制语句,诶通过流程控制语句可以什么呢?诶可以改变我们这个程序的一个执行顺序啊,可以改变我们的程序执行顺序也可以什么呢?诶也可以,诶让我们这个指定的这个程序,诶指定代码,诶反复执行多次,诶反复执行多次,这就是我们说的一个流程控制语句,什么意思呀?那现在我们这玩意儿是自上向下执行的,那我可以干嘛呢?哎,我可以用流程控制语句,我改一下,怎么改呢?我们来看,比如说两个语句,我可以让它干嘛呀,当满足条件一的时候,我就执行第一个,当满足条件二。
03:55
二的时候我就执行第二个,那这样是不是就增加了一个条件判断呀,哎,条件判断或者呢,我可以让这两个语句反复的执行多次,比如说他俩执行十次,输出十个一二三十个哈,那执行100次,输出100个一二三一百哈,这个都是我们流程控制语句可以做的事儿啊,可以改变程序的执行顺序也可以干嘛呢?哎,让指定程序反复执行多次啊,反复执行多次就是这么一个东西啊,就么一个东西,所以如果画一个简单的示意图来说这个事儿的话,以前我们程序可能什么样,这样程序这是第一个语句,这是第二个语句,这是第三个语句,这是第四个语句,它是怎么样顺序执行,执行完第一个,执行第二个,执行完第二个,执行第三个,执行完第三个执行完第四个顺序执行的,那有了流程控制语就什么样呢,他可能这样。
04:40
哎,这是一个,这一个,然后呢,这我来简一点啊,画一个菱形,然后这一个,然后这一个这一个咱们简单来说一下,还是先执行一,再执行二,诶那我们三这三这出现了一个菱形,菱形什么意思?菱形是不是有角了,有角就意味着它可能有分支了,当满足条件一的时候,我直行这,这是第四个,诶当满足条件二的时候,我执行这,这是第五个,也就说他可以做一个判断,满足哪个条件我就去执行哪个语句啊,满足哪个条件我们执行哪个语句,就这么一个东西啊,咱们先初步理解一下,那这里边我们来说一下流程控制语句,我们分成两大类。
05:22
这东西给它删了,我们的流程控制语句我们分成两大类,两大类一类我们叫做条件判断语句,还有一类我们叫做一个循环语句啊,条件判断语句还有循环语句,条件判断顾名思义,它可以根据条件来决定这个程序是否执行,如果条件成立就执行,条件不成立就不执行,而循环一句呢,循环嘛,对吧,它可以让一段程序反复执行多次啊,反复执行多次,那我们这节课先来说一下我们的第一个我们的条件判断语句,条件判断语句呢,我们也有一个名,就是我们叫做一个if语句啊,If语句来咱们还是一边写一边说创建一个新的文件,我们在这儿新建一个code code里边我们来先进入到code保存一下我们的零一。
06:23
哎,叫做一个条件判断语句,点一个PY,哎,条件判断,哎,那我们这块来说一下条件判断语句,我们也称为它叫做一个if语句啊,If语句那这里边我们学了一个新的语句,我们先来看一下它的一个语法,语法其实非常简单,一说什么什么语句肯定什么时候开头,你说if语句,If开头,While语句,Y开头,For语句,那就肯定是for开头,所以我们if语句就是一个if开头,If什么意思呀,叫做如果的意思啊,如果啊,然后后边紧跟着的是一个空格,空格在后边跟的是一个条件表达式,条件表达式后边跟的是一个冒号,一般我们也会跟一个空格,那空格可选的啊冒号,冒号后边跟的是我们这个语句啊,语句就这么一个,那这个其实看起来就非常非常简单了,If后边一个条件表达式,条件表达式后边一冒号,冒号边一个语句,那这什么意思?哎,还是除了说。
07:23
完了我们这个语法以外,我们还要关注的一个就是我们这个语句的一个执行流程,它是什么执行流程呢?诶,If语句,哎在执行时,哎它怎么执行,一看到条对表达式了,一定是对条件表达式进行求知判断啊if语句在执行时会先对我们这个条件表达式进行求值判断,对谁呀,对这个玩意儿它是一表达式呢,表达式是不是有结果呀?哎,对这个表达式进行求值判断,如果为处,哎则执行我们这个哎,If后的这个语句,If后的这个语句。
08:04
对,这是我们说如果为true的情况,那我们再说如果为负,哎则什么呀,哎则不执行啊则不执行,这个东西就非常简单了,这是一填表示它是true,这句话就执行,它是false,叫不执行,来我们来演示一下,嗯,直接来写一个,我们来写一个什么呢?If空格后边跟填表式,我先写死了,写一个处,然后来一个冒号,我来一个,哎,Print,哎print这写一什么呢?写一个你你猜哎我出来吗?我出来吗?还是写这么一句话啊,写这么一句话,这一保存,那好了,我们说了这个语句在执行的时候,先会对它进行判断,它如果为true就执行,如果为false就不执行,那现在是是false呀,哎条件表达式是不是true啊,哎,True我们这一保存,我们这一执行是不是就出来了,哎就执行了,因为条件表达式为true,那这个时候把它变成一个false,现在它是假的了,我们这再来看一走一个。
09:05
是不是就不执行了,哎,就不执行了,所以这个东西非常简单,就是说这句话是否执行由它来决定,它是true,这句话就执行,它是false就不执行,跟我们之前说那个条件表达式呢,诶条件运算符有点像啊,条件运算符有点像,哎看懂这意思吧,哎,但是同学看到这儿就要说了,哎这么写不就是神经病吗?对吧?为什么神经病啊,还是那件事,你把条件表达式给写死了,写true它就执行,写false就不执行,那还是那句话,你要想执行你就写,不想执行你就不写,不就完了吗?你这么一写是不是就就废了呀,没有意义吧,所以注意我们开发的时候会不会这么写,不会这么写啊,不会这么写,一定不会说写一个true,写一个false,而会真真正正的写一个什么呀,表达式,那这里比如我们要怎么写,那我可能是这么样这样的啊,比如说我来一个number等于十,我创建一个number number值是十,然后我直接写一个if number。
10:05
Number大于十,然后我就print一个,Print什么呢?哎,Print number比十大,写这么一句话,那这样什么效果,那现在我这个条件拔式是不是要进行判断了,哎,如果number比十大了,它就干嘛呀?哎,它就执行,如果number没有十大,它是不是就不执行了,那现在我们来看number是几十,十大于十吗?哎很明显不大于十,所以这是不是结果是负呀,它还直不直行了,哎我们这一执行一看是不是没有执行了,哎没有执行,现在看着我把number等于20改一下,我这再一直行走一个number比十大是不是就出来了,哎,就出来了啊就是这样一个效果,通过它的值,哎,通过这个表达式的值来决定这一句话是否执行啊,是否执行好,那接着我们再来看啊,那现在我们来看,也就是说现在这一句话,它是由谁控制的,是由这一个表达式来控制的,它成立,这句话就执行。
11:05
他不成立这句话是不是就不执行啊,哎,就不执行,那这个时候问题来了,那现在我们来看,假如说我在这写一句话,我写一个什么呢?诶写一个,哎,谁也管不了我,哎,管不了我,也就是说现在我是不是在if下边又写了一句话呀,那好了,我问你了,现在我们这个print它受不受if控制,受不受if控制,哎,那这样我们来看啊,现在大浴池这是处一执行,是不是谁也管不了出来了对吧?哎,出来了,好,那现在我换一个哇,Number改成十,现在是不是不成立了,不成立是不是应该不出来呀,我这一直行,Number比十大没出来,但是谁也管不了,我出没出来,出来了,出来了证明什么,是不是证明这一句话有没有受那个if控制啊。哎,没有受if控制啊,没有受if控制,那这是为什么?哎,我们这来说一下默认情况下。
12:03
哎,默认情况下,我们这个if语句只会什么呢?只会诶控制诶紧随其后的那条语句。紧随其后那条语句就说什么if,他现在他权利非常非常小,他只管什么,只管这一个啊,只管这一个,别的他都干嘛呀,他都不管啊,别的都不管,那这个时候带来问题了,同学说了,那这个玩意儿写的跟我们那个条件运算符没区别呀,只管一句话,那我如果这个功能特别特别多的话,比如说我希望条件成立,你就给我实现这一系列的代码,那这时候他只管一句功能是不是太弱了,哎太弱了,那怎么办呀,我现在假如说我后有十句,有100句这个带这个语句,我需要都由义务控制,如果条件成立这100句都执行,如果连不成立这100句都不执行,那要怎么办呢?哎,那要怎么办呢?那这里边注意,如果希望,哎我们这个if可以控制,诶多条语句,诶则可以在我们这个if后,诶跟着诶一个代码。
13:20
块啊则可以在if跟着一个代码块,那问题来了,什么是代码块,什么是代码块?哎,那这里边我们来说一下,代码块又是一个新的概念啊,我们叫做一个代码块,诶代码块指什么?哎,代码块代码我们都知道是什么,我们这写的是不是都是代码啊?哎,代码代码块呢?哎,我把一个一代码搁到一起,具体是一个代码块啊代码块中保存着什么呢?哎,保存着一组代码啊,一组代码哎同一个代码块中的代码,哎,同一个代码块中的代码,哎要么都诶执行啊,要么都执行,诶要么都不执行啊,要么都执行,要么都不执行,那也就是说,其实说白了就什么呀,哎,代码块就是哎就是一种为我们这个代码诶分组的一个机制啊分组机制比如说。
14:20
现在我这有两个,哎,Print,一个这个123,然后还有一个print,一个456,这是不是两个语句啊?哎,假如说我希望这两个语句都被if所控制啊,都被if所控制,那这个时候我就要把这两个语句都放到一个什么呀代码块里,那这样它们俩是绑定到一起了,就变成一组了,一组以后的特点就是要么就都执行,要么就都不执行,这就是我们说一个代码框,那注意了,代码框我们怎么写呀?哎,怎么写?我们来先演示一下,然后我们再总结,还是写这么一个if,我还是先写死了啊,先写死了if to后边跟一个冒号,这个是不是就是我们的if语句啊?哎,If语句注意了,如果你要想写代码块,你的代码就不能在冒号紧随其后写了啊,那注意了,我们先说,如果我们要编写代码块,哎,我们的这个语句,哎就不能紧随。
15:20
在我们的冒号的后边,之前我们写的时候,我是不是写到冒号的后边啊,因为我们没有用代码块,而现在如果你要用代码块了,冒号后边就不能直接跟代码了,哎,那怎么办?那这一块我们要干嘛呀,我们要在冒号的下一行写啊,语句就不能仅在冒号后边,而是上面什么呀,诶,而是要写在我们这个下一行啊,写在我们下一行,那再来看,那当我们进入到下一行的时候,这儿就进入到了一个新的一行,在这儿我们就可以编写代码块了,诶在这编写代码块,但是代码块怎么写?注意你这直接写一个PRINT123,这不对了啊,这不对了,因为这样体现不出这句话比if,诶受if的管理,那怎么办呢?诶,我们需要缩进啊,怎么缩进,按你现盘上的table键,你来看,它是往右进了这么多呀,哎,进那么多,然后在这儿我们来写一个PRINT123啊,现在我来写一个PRINT1。
16:20
三那注意现在这个print就跟这个if是一样的,注意其实这个写法跟我刚才这么写是一样的啊,这么写是一样的,我们先看看效果啊,现在处我一执行123是不是出来了,来我把这改成一个false false再一执行,大家来看是不是就不出来了,哎,不出来了,那现在跟我们刚才写是一样的,但是注意一定要写一个什么呀,缩进啊,写了缩进才表示它是被if所管理的啊管理的好,那现在来看,那跟刚才有什么区别呀,那注意了再来看,我再写一个PRINT456,那注意刚才我这个呢,写到这儿,它是不是if管不着啊,那现在我写到这儿了,你再来看啊,我这一直行两个是不是都没执行,哎,都没执行好,我把这换成一个这个处这儿再一直行,是不是两个又都出来了,哎都出来了,那现在等于说这两句话,它都是受if的管理啊,都受if管理,那比如说你下边还有啊print的一个这个789。
17:20
好,然后print的一个什么呢?哎,Print的一个,哎九哎哎这个十十一十二,他要写一个,那现在注意你只要前边还有这缩进,只要前面还有这个缩进,那这句话就由if控制,那现在来看,现在这四个就是一个代码块,这四个要么都执行,要么都不执行,现在来看处处执不执行,哎我们这一保存一执行是不都执行了,好那再来我把这个处改成一个false,再一执行走一个是不是都没出来,哎都没出来,所以这个就是一个代码块啊,这个就是一个代码块,那所以注意了,一般情况下像这种写法我们是用的比较少的,因为if以后我们一般都是要管理多个语句的,所以后边一般都是跟着代码块,所以这个语法我要改一下,我们后边不写语句了,而什么呢?回车往里缩进这来一个这个哎代码块哎代码块哎,那这样就是什么呀,如果条件表达式为处代码块就直行,如果条式为。
18:20
Bos代码块叫不执行啊,代码块就不执行好,那这个就是我们说代码块,那这里边我们来总结一下,如果要编写代码块语句就不能紧随在冒号边,而是要什么呀,写在下一行,然后我们的代码块注意诶代码块以什么呢?以我们这个缩进开始啊,以缩进开始在这儿你是不是要写代码块啊?哎,缩进这儿来一个缩进就表示这开始一个代码块,那这个归谁管,归它的上一行代码去管理啊,代码块已缩进开始,那问题来了,什么时候结束?什么时候结束啊,那现在来看这,我这写一个P的一个这个hello,我问你了,这hello现在还是不是在这代码块里,哎,来保存一下,看你执行hello是不是出来了,哎,我把这改成处改成处一执行hello。
19:09
Hello,是不是也出来呀,哎,也就说你会发现现在无论它是true还是false,对它有没有影响,没有影响,也就是说它还是不是代码块,哎,它不属于代码块了,所以注意代码块已缩进开始到什么时候结束,哎,直到诶我们这个代码诶恢复到之前的一个缩进级别时结束。诶,级别时结束什么意思啊,哎,在这儿我第一次缩进这个代码块开始,这又缩进了还是代码块,这又缩进了还代码块,这又缩进了还是代码块,到这儿有没有缩进了,没又缩进了,它就从代码块里边出来了啊从代码块出来了,所以注意啊,代码块已缩进开始到下一次,这是第一执照代码恢复到之前的缩进级别时结束,也就是说整个这一段都由我们这个if来控制啊,都我们这个if来控制,其实这个就像什么呀,这个其实你如果举个例子,就像我们,呃去看一些文章是吧,看一些文章有时候可能这样,哎,可能是这样,比如说是写一个这个鲁迅说。
20:17
哎,鲁迅说过,然后我们往往就是什么呀,哎有的时候我们直接往后边跟,或者有时候干嘛呀,我们另起一行,然后是不是在这儿写呀,哎什么什么世上,哎世上本来哎没有路是吧,没有路哎走的人多了,哎自然就有了,这是我们说鲁迅说的对吧?哎自然就有了,哎那这里边我们来说,当我们这再往下说啊,然后往下我是不是可以接着写呀,接着写,如果你还是在这缩进,那证明这个一直都是鲁迅说的话,但是当你的代码回去了,回到前边了,比如说我这来一个YYYYY,那这个YYYYY还是不是鲁迅说的了,就不是鲁迅说的了,其实跟我们这个事儿一个意思啊,我通过缩进来表示我们这个带板块,那这个跟别的语言稍微有点区别,这也是为什么刚开始我们讲语法的时候说了,Python是一个缩进严额的语言,在Python当中千万不要瞎写这个什么呀,缩进,千万不要乱写缩进。因为。
21:17
缩进表示啊,是啊是啊,代码块你这一缩进,那你觉得可能就是空两格,其实代表什么意思,代表的是这句话就归他管了啊,这个太管了,他能不能执行都由他说了算啊,都由他说了算,好,那这个就是我们说的一个if语句条件判断,整个语句来说并不难啊,整个语句来说并不难,但是这里边我们说了一个概念,说了个这个代码块大家需要去理解一下,需要去体会一下,那先尝试着把这个东西去写一下啊,写一下我们来评一下。
我来说两句