课时38:运算符的优先级
摘要:
1.回顾练习
2.运算符的优先级
01.回顾练习
回顾之前的练习。该练习涉及三个变量 a、b 和 c,
a=10 b=20 c=30 #通过条件运算符获取三个值中的最大值 Max = a If a > b Else b Max = Max If Max > c Else c Print(Max)
获取 a 和 b 的最大值Max,再用Max和c比看谁大,谁就是最大值。
a=40 b=20 c=30 max = a if a > b else b max = max if max > c else c print(max)
三元运算符还可以稍作复杂化,可以连续写,就是可以将这两个东西整合成一个。
max = a if a > b and a > c else b if b > c else c
如果b And a 条件满足证明 a 是最大的,反之不是最大的,b 或者c 是最大的,再比较 b 和 c 的大小。
把 b 改成 50,结果就是 50。
b and a
是条件判断, c else b if b > c else c
是表达式,语句在执行时会进行判断,如果 a 比b 大,同时 c 比 a 大,会返回 a, 有一个不成立会执行 Else ,如果 a 不是最大的,就比较 b 和 c 。尽管表面上代码量减少,仅写了一行代码,但实际这行代码的可读性和理解性非常差。可能自己编写后还能理解,但让他人阅读这段代码会非常困难。因此,在开发过程中不推荐使用这种方式。如果必须如此编写,在条件判断表达式后添加一个括号,对整个 Else 子句进行包裹,这样逻辑的节奏就变得清晰可读。虽然这种做法会使代码看起来更清晰,但并不推荐使用,因为这会增加阅读难度。强调,代码不仅要功能正确,还要易于阅读。
max = a if (a > b and a > c) else (b if b > c else c)#不推荐这么使用
02.运算符的优先级
a=1
+2*3
Print(a)
运算顺序是先乘除后加减,和数学中运算顺序一致。在 Python 中,运算符也有优先级,先进行乘除运算,再进行加减运算。
然而问题随之而来在 Python 中使用的运算符比实际要多。例如有 And 和 Or。
a
= 1
or 2
a
nd 3
And 和 Or谁的优先级高,假设无法通过百度或向他人提问来获得答案,遇到这类问题时,可以自己尝试分析。先猜测一下,这种情况可能有两种或三种可能性。第一种是两者一样高。第二种是And 的结果更高。第三种情况是Or 高,如果Or的优先级高,或者两个运算符的优先级一样高,则需要先进行或运算,则运算结果是3,如果 And 的优先级高,则应该先计算与运算,则运算结果是1,所以分两种情况,如果结果是 3 就是与高,或者一样高。结果是 1 就是 And 高。
经过测试发现与的优先级更高。运算符的优先级可以根据优先级的表格来查询,在官方表格中位置越靠下的运算符优先级越高,优先级越高的越优先计算如果优先级一样则自左向右计算,在 Python 3.6 的手册,直接点开它,在 Language Reference 中Expressions 表达式,有一个 Operator,就是运算符操作符的意思。
直接点开就看到了一个表格。
这个表格实际上就是在说运算符的优先级,注意这个表格越往下优先级越高。括号、中括号和大括号,它们的优先级是最高的,幂运算是优先级较高的。一元的正号,一元的负号,乘除整除,a 比与高,与比或高,三元运算符没什么位置在最后,如果对运算符的优先级感到困惑,可以参考下表格。关于优先级的表格,你知道有这么一个东西就够了,千万不要去记。在开发过程中,如果遇到优先级不明确的情况,可以通过加上小括号改变运算符的优先级。
逻辑运算符(补充)在Python中有一个特殊的用法,逻辑运算符可以连续使用。
Result = 1 < 2 < 3
Print(Result)
#相当于1<2 And 2<3
,同时满足时返回True,都是以中间的数进行比较,这种写法在 Python 中是独有的。
Result = 10 < 20< 15
返回True,都是对中间的数进行比较。
再次强调,本章内容属于基础知识,可能会让人感到乏味,甚至昏昏欲睡。然而基础知识的重要性不容忽视,如同学习语言之初,对每个字的笔画、大小、前后顺序等细节可能毫无关联,但随着知识的积累,当能够将这些知识点串联起来时,就会发现其中的奥秘。因此,现在正是要认真记笔记、积累知识,并在此基础上进行完善和总结,补充缺失的内容,借此机会进行复习,确保大家能够熟练掌握本章的知识。随着进入第三章和第四章,练习的难度将逐渐增加。到那时将会深刻认识到基础知识的重要性。因此,务必扎实地掌握前三章的基础知识。