• 手机站
  • 收藏
聚培教育网合作机构 > 烟台达内教育
烟台达内教育
400-998-6158
烟台达内教育是一家由留学海归创办的高端职业教育培训机构,是中国人才培养平台、人才输送平台。
烟台达内教育

Python逻辑运算and-or运算的本质是什么

python学习网

更新时间:2021-11-01 浏览:112
核心提示:一.and.or.and-or高級运用此即是说白了的逻辑运算符,我们在分辨标准的情况下,经常会碰到下边的下边这种的分辨方式 :if condit

Python逻辑运算and-or运算的本质

一.and.or.and-or高級运用

此即是说白了的逻辑运算符,我们在分辨标准的情况下,经常会碰到下边的下边这种的分辨方式 :

if condition_expression1 and condition_expression2:

或是是:

if condition_expression1 or condition_expression2:

这类轻松的大家都是会,可是他还在更为高端的使用方法哦!

1.1 好几个and并排

在python中,and自从左往右扫描仪布尔表达式,假如全部数值真,则回到最后一个为确实关系式,假如为假,则回到**个为假的关系式,

一般的文件格式如下所示:

cond_exp1 and cond_exp2 and cond_exp3 and cond_exp4

比如:


In [1]: e=2 and 1 and 3 and 4

In [2]: e #由于2.1.3.4均为True,回到最后一个为True的,即4

Out[2]: 4

In [3]: e=2 and 1 and 0 and 4

In [4]: e #由于里面的0为False,因此回到**个为False的,即0

Out[4]: 0

In [5]: f=1<;2 and 2<;3 and 3<;4 In [6]: f #由于1<;2.2<;3.3<;4均为True,回到最后一个为True的,即3<;4,而3<;4自身是布尔表达式,因此为True Out[6]: True In [7]: f=1<;2 and 2<;3 and 3>;4 and 5

In [8]: f #由于1<;2.2<;3为真,正中间的3>;4为False,回到**个为False的,即3>;4,而3>;4自身是布尔表达式,因此为False

Out[8]: False

1.2 好几个or并排

or的适用与and恰好反过来,自从左往右测算全部布尔表达式,假如有所为确实值,那麼马上回到**个为确实值,假如全部关系式为假,则回到最后一个为假的值,一般文件格式如下所示:

cond_exp1 and cond_exp2 and cond_exp3 and cond_exp4

比如:


In [9]: e= 2 or 1 or 3 or 4

In [10]: e #由于2.1.3.4均为True,回到**个为True的,即2

Out[10]: 2

In [14]: e= 0 or 0 or 0 or 0

In [15]: e #由于拥有的0为False,因此回到最后一个为False的,即0

Out[15]: 0

In [16]: f=1<;2 or 2<;3 or 3<;4 or 4<;5 In [17]: f #由于1<;2.2<;3.3<;4.4<;5均为True,回到**个为True的,即1<;2,而1<;2本身是布尔表达式,因此为True Out[17]: True In [18]: f=1>;2 or 2>;3 or 3>;4 or 4>;5

In [19]: f #由于1>;2.2>;3.3>;4.4>;5为假,因此回到最后一个为False的,即4>;5,而4>;5自身是布尔表达式,因此为False

Out[19]: False

1.3 and-or并排

序言:Python中,沒有像

cond_expression?expression1:expression2

那样的三元运算符,可是因为Python英语的语法上的灵便,大家称下边的句子为python的三元运算符,即:

expression if condition_expression1 else expression2

可是这一大家现在不用说,今日说一下应用and-or 仍然能够完成三元运算相近的实际效果,


In [1]: a="hello"

In [2]: b="world"

In [3]: c=1 and a or b #等额的于 True and a or b

In [4]: c

Out[4]: 'hello'

In [5]: c=0 and a or b #等额的于 False and a or b

In [6]: c

Out[6]: 'world'

从功效上来讲这跟三元运算的确很像,尽管看上去实际效果的确是三元运算,可是需要特别注意的是跟之前的好几个and,好几个or一样,and.or .and-or他们联接的一定是条件表达式,独立的一个数据.一个自变量.一个字符串数组全是转换为条件表达式以后来分析的,这牵涉到其他基本数据类型与bool种类不同的变换。因此接下来来研究一下and-or的实质


In [1]: a="hello"

In [2]: b="world"

In [3]: c=1 and a or b #等额的于 True and a or b

In [4]: c

Out[4]: 'hello'

分析:由于1是True.a="hello"转换为bool种类也为True,先计算

1 and a,2个True开展and计算,依据之前讲的标准回到最后一个True,即回到a,由于a是True,b="world"也是True,2个True开展or计算,回到**个,即回到a,这就是为何最终回到a的缘故了。

再看一下现在这一:


In [5]: c=0 and a or b #等额的于 False and a or b

In [6]: c

Out[6]: 'world'

分析:由于0是False.a="hello"转换为bool种类也为True,先计算

0 and a,一个False和一个True开展and计算,依据之前讲的标准回到**个False,即回到0,又由于b="world"也是True,一个False和一个True开展or计算,回到**个为确实結果,即回到b,这就是为何最终回到b的缘故了。

再看一下现在这一:


In [7]: a=0

In [8]: b=1

In [9]: c=True and a or b

In [10]: cOut[10]: 1

In [11]: c=False and a or b

In [12]: c #为何仍然回到1呢?

Out[12]: 1

分析:由于a=0,即a为False,当上面的情况为True的情况下,True与False开展and计算,回到False,即a,当上面的情况为False的情况下,False与False开展or计算,或是回到最终的那一个False,即a,不管最前边的是True或是False,**个回到的一直a,由于a为False,在与之后的b开展or计算,当b是确实情况下,回到b,当b为False的情况下或是回到b,因此发生了上边的結果。

难题:只需and-or正中间的那一个关系式转换成bool种类以后是False,不管and前边和or后面是什么,最后的结局必定是回到or后边的b,这就失去三元运算的实际效果。

为了更好地处理那样的难题应该怎么办呢?

我们可以怎样做

解决方案:

依据以上的研究我们知道,处理这个问题的关键是在与怎样确保and-or正中间的那一个关系式为True才行,因此我们可以将上面的那一个关系式做为目录的一个原素,不管这一原素是真的吗,目录一直不容易为空的,也就不易为False,也就了and-or正中间的一部分为True,如下所示所显示:

cond_expr1 and [cond_expr2] or cond_expr3 #将and-or正中间的关系式用目录包裝,确保为True

看下面的事例:


In [7]: a=0

In [8]: b=1

In [13]: d=True and [a] or b

In [14]: d #回到的虽说并不是a,二十[a],可是早已到到三元运算的实际效果

Out[14]: [0]

In [15]: d=False and [a] or b

In [16]: d #回到的是b

Out[16]: 1

这就完成了应用and-or句子完成三元运算的目地。

1.4 汇总

*须 特别注意的是,我们都是依据逻辑性剖析,让and-or句子做到三元运算的实际效果,可是实质上来讲它并并不是三元运算符哦,实际上不管如何组成,大家记牢and和or计算的一般标准就可以,这是1.1和1.2里边常说的內容,正所谓以不变应万变,and-or的实质仍然是或运算,掌握实质,如何转变都不害怕!

更多>同类资讯
更多>相关课程
顶部