00:00
好,接下来我们来说一下我们运算符里的最后一个内容,也是我们这一章节最后的内容啊,我们来。我先关闭一些文件啊,然后在这儿我来创建一个新的文件保存一下,哎,我们16。叫做一个运算符的预算级,运算符的优先级啊,那在这里我们先不说它,我们先说一下我们之前说的练习是吧,之前说练习我们说了有三个数ABC啊,ABCA等于一个,有三个变量ABCA等一个十,然后呢,随便写一个啊,B等于一个20,然后这个C等于30,留一个练习干嘛呀?哎,我们可以要通过我们这个条件运算符,条件运算符获取我们这个三个值中的这个较大值,哎,三个值中的这个最大值,那这一块我们要怎么获取啊,怎么获取,那其实两种方式,第一种方式,哎,我们刚才是不是已经获取到A和B的最大值了,哎,我直接max等于什么呀,等于一个A,然后if a大于B,然后L一个B,这是A和B里的价值,然后我再来一个max,等于什么呢?等于max。
01:22
直接来个if max大于C,然后L一个C,什么意思啊,我先获取到A和B里边最大值max,然后我再拿max和C比,那也就说他俩谁大是不是谁就最大值了,哎,谁最大值了,那这个时候我们这来一下print一个这个max,这一执行是不是就是30了,哎,三十来,我把A改成40啊,改成40,这一保存结果是不是就是40啊,哎,非常简单啊,这是我们说这种方式,当然这个啊,我们的三元预算符,你还可以给它写的稍微复杂一点,就说你可以连着写,怎么写呢?也就说我可以把这两个东西给它整合成一个啊,整成一个,那你来看我这么写,你能不能看懂,我写一什么呢?哎,我写一个这个max等于什么呢?等于A啊,Max等于,然后还是if a大于B,然后else,这是不是来个B啊,这跟之前是不是没有变化呀,哎,没有变化,但是这个时候我就要。
02:20
有变化了啊,这时候是叫有变化了,有什么变化呢?哎,这是一个AEA大于B啊,A大于B,诶,这是这个a if a大于BSB,但是这里边注意我这要加一个条件,我要加一什么呢?加一个and的A大于C啊,这能看懂吗?A也就说if a大于b and a大于C什么意思啊,也说如果A大于B,同时A又大于C,那这个时候我就干嘛,哎,我是不是就返回A呀,哎,我就返回A,然后else else什么意思?那就说else,这如果这个条件满足,那就证明谁是最大的,是不是证明A是最大的,那证明A是最大的了,那我就反A是没问题了,那如果这个条件不满足,那证明A是不是最大的,不是,那就有可能是什么呀,B或者是C是最大的,那这个时候我就需要再比较B和C的关系,那怎么写,我直接else b注意了,后边紧接。
03:21
这来一个B大于C,然后L一个C,写这么一个效果,那我们先看看执行起来,看看效果对不对啊,看结果对不对,我这一执行40啊,然后把B改成这个50,这一保存结果就是50,结果是不是一样的呀?哎,结果是一样的诶,但是感觉好像有点有点绕啊哎,那注意了,这个咱们来看一下怎么执行的啊,刚才已经说过一遍,再说一遍,先是A表达,这是A是我们表达式一,然后这个是我们的条件判断啊条件判断,然后呢,这整个实际上是我们的一个表达式啊表达式,所以这个语句在执行的时候先会对它进行判断,如果A比B大,同时A又比C大,那这个时候我就会返回A啊凡A,然后else else也说这个条件不成立,有一个不成立,是不是就会执行else啊,因为注意我这用了一个与与是不是要求两端同时满足啊,哎,同时满足会执行这里,执行这里的时候他在干嘛?哎,他这反。
04:21
等于谁呀,这整个结果是谁呀?不一定吧,如果B大,这整个就是B,如果C大,这整个是不是就C呀?哎,就说这在比较B和C的关系啊,就说如果A不是最大的,就比B和C,其实跟上边试的是一样的,但是这个好不好,这个实际上不太好,虽然看上去好像代码少了,我就写了一行代码,但是实际上这个代码实际上非常的不好阅读啊,不好阅读,不好理解,你自己写完了你可能还能明白,但是这个代码你让别人去看的话,别人很难看懂,所以我们在开发的时候呢,不推荐这么写,诶那你说如果你非得这么写怎么办呢?哎,你可以这样,你给这儿啊加上一个括号,给这儿加一括号,给else,后边整体呢再加一个号,这样我们就很清楚这个结构就能看出来了,哎,你说这就就这就是我们的什么呀,条件判断,条件表达式,这是我们语句一,这是我们语句二,这样看起来就比较清晰了,运行效果是一样的,但是就看起来比较清晰一点的,但是还是整体。
05:21
还说不推荐大家去这么写啊,这个不推荐这么使用,哎这么使用为什么?因为用起来不方便,就是阅读起来不方便,我们说了我们代码除了写完了以后功能要对,还有一个要求,就是我们代码写完了以后什么呀?哎,它的要方便阅读啊,方便阅读好这是一个它,然后接着往下看啊接着往下看,下边我们再说一个什么呢?下边我们再说一个是我们的一个,哎,运算符的优先级,运算符的优先级,看这么一个东西啊,我来一个A等于一加二乘以三,诶一加二乘以三,然后在这我PRINT1加A,我要问你结果是什么。
06:12
结果什么?哎,结果很明显,二三得六加一是不是得七呀?哎得七,那有同学可能举了,我觉得这应该能能得九啊,怎么得九啊,一加二得三,三乘三得九是不是九啊,不是九,很明显结果是七,为什么?因为我们这是不是先算乘后算的加呀,哎后算加,所以这里边注意和我们这个数学中一样啊,和我们数学中一样,在我们这个Python中它什么呀?哎,运算符也有预级诶也有优先级,诶比如诶先什么呀?诶乘除后加减,这个跟我们这个数学当中是一模一样的啊,是一模一样的,但是问题来了,我们在Python里,我们用到的运算符是比我们实际的要多呀,比如说我们有and有O对吧?有and有O,那我写这么一个A等于一个1O2AND3,我写这么一个东西。
07:11
那这个结果是什么呀?这个结果是什么呀?这个是先算O还是先算an的呀?哎,那完了,遇到这种问题就烦了,如果是加减乘除咱们能判断,但是O和an的优先级我们是不是不清楚啊,哎,我们是不清楚,那到底是O的优先级高还是and的优先级高呢?那现在咱们假设我们没有办法去有一个位置,比如说我没有办法通过百度或者通过问谁来给我们解答这个问题,那我们能不能自已来分析一下,诶自己来分一下,所以这个东西其实也非常简单,遇到这种问题我们自己来尝试一下,我们先猜一下啊,我们先猜一下,那这个东西无非就两种可能,三种可能对吧?三种可能哪三种可能啊?诶,第一个一样高一样对吧?哎,一样,第二个什么呀?哎,我们这个暗的高,第三个什么呀,我们这个不高,是不是就这三种情况,哎,就这三种情况,那现在我们来就这三种情况来分析一下,如果是一样高,它的结果应该是什么,如果是按的高,结果应该是什么,如果是欧高应该是什么?好,那我们先来看这个如。
08:14
果是O高,如果是O的优先级高或的优先级高,那是不是应该先算货后算语啊哎,那注意了,还有什么情况也会先算货诶说如果他们两个优先级一样高,O和与的先级是一样高的,那这时候是不是要从左往右算,是不是也会先算O啊?诶所以O高和一样高一样高是一样的啊,是一样的,所以注意,如果O的约翰级高,哎或者什么呀哎,两个运算符的优先级一样高啊,一样高,则哎需要先进行或运算啊,先进行或运算,那我们来看结果吧,先进行或运算,也就是先算一或二,一或二我们说或运算是找的,找处的,一已经是处了,二还看不看了,不看了,所以整个结果就是一,最后我们是不是要算一与三呀?一与三我们说了云算是找false,第一个值是什么?第一个值是处是?
09:14
直接返回第二个呀,所以如果是一样高或者或高,哎则什么呢?哎,则我们运算结果是什么呀?是三啊是三,因为这个返回的是一,相当于一与三,而语运算式找找false,没有false,第一个是处了,是不是返回第二个值,哎返回第二个值,那现在来看如果什么呢?哎,如果我们这个and的优先级高,哎则应该先计算什么呀?先计算我们这个语运算啊,先计算我们这个语运算,所以这个时候它的结果应该是什么?这个结果什么?哎,则我们这个运算结果我们来看,那如果是与的原积高,应该先算二与三了,二与三的话,那就是什么呀,结果就是三嘛,二是处肯定找三去对吧,因为找负嘛,啊第一个值处则返回第二个值啊所以返回三,然后就是一或三,一或三不用看了,后边这爱是啥是啥了,直接返回什么呀,一啊都返回一,所以这时候,所以运算结果唯一什么呀?哎是一啊是一,所以这是我们分类两种情况,如果结果我们看到了是一,那就证明雨的高,如果是三,那就证明一样高,或者是货高对吧?诶货高,那我们来看看咱们觉得哪种情况可能更更高一些,哎,其实要是我的话,我可能直观上去想,哎,雨跟货应该一样高啊,应该一样高,但是我们来看看结果是不是这样啊,来在这我来执行一下,我这一执行,诶结果说结果是一符合了,我们是不是第二种推断呀,哎,所以经过我们测试,我们是不是发现雨的优先级更高一些,哎,雨的优级比获的优先级要。
10:50
要更高啊,要更高,哎,有同学说了,哎呀,天呐,这玩意儿谁猜得着啊,我哪知道雨的高还是货的高啊,我还以雨的雨高还是货高,我还以为一边高呢,那怎么办?那注意了,关于优先级我们可以什么呢?运算符的优先级可以根据我们这个优先级的这个哎表格来查询,诶表格来查询在我们这个表格中啊注意我们说一下这个表格,我们说的是官方文档里的表格,在表格中。
11:24
位置越靠下。越靠下的运算符优先级越高啊,优先级越高的,诶这个越优先计算啊,越优先计算,哎如果什么呢?诶优先级一样,诶则什么呢?哎自左哎向右计算啊,则自左向右去计算,这是这么一个意思,那现在我们来看,那这个是去哪看这表啊,这表啊还是直接找我们这个Python安装完了以后,是不是给我们提供官方文档了,直接找一下官方文档,Python3.6的这个手册直接点开,它在哪呢?还是这块找我们这个language reference稍微难找一点,有一个表达式啊,点开expression,然后往下找,有一个这个operator operator就是运算符操作符的意思,直接点开在这儿我们就看到了一个这个表格。
12:30
Produce这个单词我猜是预算级是吧,我不认识,但是我猜应该是先级,那这个表格实际上就是说的我们运算先级,注意这表格越往下优先级越高,你看什么这个括号啊,中号啊,大括括,我还没讲呢,这是什么东西,我们讲这个这个序列呀,讲这字典的时候,我们再去说,但是它的优先级最高的对吧?然后往上什么中括号啊,然后V的呀,你看这是什么呀,我们幂运算,幂运算是优先级是比较高的呀,哎,比较高的,然后这个是什么呀,加减,这不是加减,这是正负一元的正号,一元的负号,然后往上乘除整除取模对吧,然后再往上是不是加减呀?哎,你说乘除是比加减高啊,哎吧,加减高再看啊,这不定算数,先不管它还有什么呀,什么这个not and哦,你看not比这个非比语高与比或高,你看这三元运算符是不是就没什么位置在最后呢,对吧,在最后呢,所以这一块如果你的运算符优先你搞不清楚。
13:30
你可以参考一下这个表格,越往下优先级越高啊,越往下优先级越高,好,那这就是一个东西,但是同学说老师那这玩意儿我用不用记啊,哎,注意千万别记啊,千万别记,看着头疼啊,千万别记,那注意啊,这个表格啊,哎,关于我们这个优先级的表格,诶你知道有这么一个东西就够了啊,就够了,诶千万不要去记啊,千万不要去记,你知道有就行了啊,常用那几种你知道行了,不用去记忆,那同学说,那我因为你闹不明白怎么办呀?哎,咱们说了,在我们这个开发中,如果遇到我们这个优先级不清楚的啊,不清楚的比如说像在这儿你的一或二,还有二与三,你不知道谁的优先级高,但是这个时候你可能干嘛呢?我希望先算货运算,那怎么办呀?哎,咱给他套一括号,哎,我可以通过括。
14:30
括号来改变它的一个什么呀,优先级这样一执行结果是不是就三了,诶结果就三了啊,所以注意,如果开发中遇到什么呀,诶优先级不清楚的则哎哎,则可以通过我们这个小括号哎来改变我们这个什么呀,运算顺序你虽然不清楚学算级,但是你知道你想先算谁,那这时候你就加个括号就完事了啊,加括号完事了,包括这也是你想先算一加二,给一加二加个块就完事了啊好,这个是我们说的一个这个运算符的一个优先级的问题啊,这东西知道一下就OK了啊好,然后呢,在这我们再补充一个小问题,这个刚才忘说了,我也是突然想起来了,之前我们讲的这个逻辑运算符,就是大于等于小于等于那些东西啊,大于等于小于,那等于那些那些东西在我们Python里边有一个特殊的用法啊,特殊用法在这我们来补充一下,逻辑运算符的一个补充。
15:30
哎,补充什么补充呢?注意了,我们这个逻辑运算符可以什么呀?哎,可以连着使用啊,可以连着使用什么意思啊,什么意思,比如说我们直接来写了啊,来写reut,我可以直接写一个一小于二,然后小于诶然后小于三,哎,然后小于三,我可以这么写,我们先看结果啊,我们先看结果直接来一个print ret啊ret这一保存一执行反应在什么处,是不是关系成立了,哎,关系成立了,这就是OK了啊就OK了,可以这么写啊,可以这么写,但是注意这么写是什么意思啊,这么写什么意思?那注意啊,它不是说我一小于二,同时一又小于三,不是这个意思啊,不是这个意思,那这东西什么意思?它的意思它相当于什么呢?它相当于我们这个二大于一,同时二小于三啊二大。
16:30
A,一同时二小于三,所以在这儿你要怎么看,它是分两部分看的,一部分是一小于二,还有一部分是二小于三啊,或者我这么写吧,这么写你可能看乱了,我也写成一小于二啊,一小于二这有两部分,一个是一小于二,一个是二小于三,只有一又小于二,同时二又小于三,这两天同时满足的时候,它会返回处啊,所以注意它都是以中间这个数进行比较的啊,不是先拿一和二比,再拿一和三比,都是以中间这个数进行比较的,这种写法是在我们Python当中独有的,一定注意是跟中间数进行比较的,诶,那同学说了,你。
17:10
怎么证明确实是跟中间是不行比较的呀,看着我写这么一个result等于一个我来一个这个诶十诶小于一个这个20啊,十小于一个20,然后呢,我来一个大于一个15啊,十小于二十来大于一个15,那注意如果这是对十比的,那十小于二是成立,但是十大于15成立吗?不成立是应该返回负呀,哎反负,但是我们这一执行反映的什么,还是出为什么,因为这句话意思相当于什么呀,就是20大于十是吧,十小于20,同时呢,20大于15,它都是对中间这个数进行比较的啊,对中间数数行比较的好,那这个是我们说逻辑运算法一个补充啊,这是我们在我们的Python里独有的一种用法,先记一下,后边我们用的时候再去详细的去说它啊,那到此为止,我们的运算符就给它说完了,那我们的第二章我们的Python入门也就完事儿了啊,就完事儿了,当然我这个笔记呢,其实这。
18:10
啊,没有写全,因为有一部分笔记呢,是在我们的这个直接写到源码里的,写到注释里的,所以这个时候呢,你可以把我的这个笔记用你自己的方式给补全,我没写的或者写的不全面的,自己把它给它补全一下,通过这个机会把这个知识给它巩固一下,还是再强调一下,我们这一章都是基础知识,非常的无聊,特别的无聊,你可能听着听着想睡觉了,对吧,非常非常无聊,但是基础知识就是这样,就像我们学习语言,刚开始学学上学的时候,学字儿的时候,可能我们就一个字上中下,什么大小前后这些字,一个字一个学,每个字跟每个字之间一点关系都没有,学起来是很痛苦的,但是当你积累到一定程度以后,我们再去把这些知知识串联起来的时候,你会感觉到获益匪浅,所以这个时候一定要好好的记,好好的积累这个笔记,自己再给他完善一下,给他总结一下,把没有的东西给它添进去。
19:10
借此机会做一个复习,一定要把这个第二章的知识给他记熟啊,要记熟,我们往下,当我们进行到第三章,第四章的时候,我们的练习就会逐渐增多,那时候你就会发现之前的基础知识有多重要了啊,有多重要,一定要把前边这两章的基础给他打牢啊打牢好,这里我们先停一下,我们三章,第三章,第四章的时候我们继续。
我来说两句