python与或非运算规则_Python逻辑运算符之与或非

2ea317f962ee4c6bcab424597497f0a1.png

在看python的时候逻辑运算符没看懂。

x and y

布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。

(a and b) 返回 20

就这一段话,看的我有点懵逼,然后我就去上网搜了别人的解说,然后写了一篇文章,供大家理解。

先学习其他语言里的与或非。

短路与(逻辑与)和非短路与。或也是如此,不在重复,接下来拿与举例子。

一. 短路与(逻辑与)和非短路与

先来看牛客的一道题

如下语句通过算术运算和逻辑运算之后i和 j的结果是( )

int i=0;

int j=0;

if((++i>0)||(++j>0))

{

//打印出i和j的值。

}

A i=0;j=0

B i=1;j=1

C i=0;j=1

D i=1;j=0

答案是:D

(++i>0)||(++j>0) 中的||是短路与。

这题考察短路逻辑的用法

&& 和 || 分别为 短路与 和 短路或

&& 若前面的表达式结果为false,整个逻辑表达式的结果就为false,所以后面的表达式无论true或者false都无法影响整个逻辑表达式的结果,所以为了提高代码执行效率,后面的表达式就不会执行。

同理,若前面的表达式为true,则后面的表达式也无需计算。

& 和 | 为 不短路与 和 不短路或

无论什么情况,前面的和后面的表达式都要执行。

二. python逻辑运算符之与或非

python的与或非具有短路效果。

&&具有短路的效果。左边是false,右边就不执行。

||具有短路的效果,左边为true,右边不执行

2ea317f962ee4c6bcab424597497f0a1.png

以下是对python运算符的详细解答:

运算符

not,and,or

not

语法:not x

作用:

对x进行布尔取反/取非

非真即假,非假即真

如bool(x)为True,not x 则为False

如bool(x)为False,not x 则为True

示例:

not True : False

not False : True

month = 10

if not 1<=month<=12:

print(‘month不在1-12之间’)

and 运算符

语法:

x and y

注:x 和 y 是两个表达式,可以是bool,也可以是非bool

如果是非bool的话,会通过bool()进行转换

作用:

将x和y做并列运算

如果x和y的结果都为True,那么整个结果则为True

如果x和y有任意一个结果是False,那么整个结果则为False

示例

特殊:

1. 0 and 0 :0

2. 0 and 15 :0

3. 15 and 18 :18

and 两端的操作数,如果左侧已知为False的话,则不判断右侧,并以左侧操作数的值作为整体表达式的值

and 两端的操作数,如果左侧判断为True的话,则继续判断右侧,并以右侧操作数的值作为整体表达式的值

or运算符

语法:

x or y

作用:

x ,y两个条件只要有一个为True,那么整体结果就为True

示例:

1. True or True : True

2. True or False : True

3. False or True : True

4. False or False : False

特殊:

当x为True时,则以x的值作为整体表达式的结果

否则,则以y的值作为整体表达式的结果

1. 0 or 0.0 : 0.0

2. 100 or 200 : 100

3. “我好帅” or “我不帅” : “我好帅”

4. score = input(‘请输入考试成绩’) or ‘0’

如果不输入考试成绩的话,score的值则为0

否则 score的值就是输入的值

和其他语言逻辑运算的区分:

首先,‘and’、‘or’和‘not’的优先级是not>and>or。

其次,逻辑操作符and 和or 也称作短路操作符(short-circuitlogic)或者惰性求值(lazy evaluation):它们的参数从左向右解析,一旦结果可以确定就停止。

例如,如果A 和C 为真而B 为假, A and B and C 不会解析C 。作用于一个普通的非逻辑值时,短路操作符的返回值通常是最后一个变量。因此,逻辑运算符的理解也与C语言中不同。

举个例子:

9d474cc73833e52c4bd62ee3afab832b.png

在以上例子中,按照C语言对的思维,3 and 4即3与4为3,但是由于是短路操作符,结果为4,是因为and运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量,即为4;改变一下顺序4 and 3 ,结果也不一样,即为3.

而或逻辑(or),即只要有一个是true,即停止解析运算数,返回最近为true的变量,即 3 or 4,值为3;改变顺序4 or 3 即为4.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值