Python3 基础语法-逻辑运算符 and、or、not 的精确讲解

a5f10cb8ec054342955a8d2831bdade0.pngPython3 基础语法 

逻辑运算符 and、or、not 的精确讲解

Python语言支持逻辑运算符。

初学者有难点,请仔细多次阅读!

运算符表达式描述实例(注意返回值)
andx and y布尔"与" :如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。

a= 10 ,b = 20

(a and b) 返回 20

orx or y布尔"或" :如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。

a= 10 ,b = 20

(a or b) 返回 10
not not x布尔"非" :如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

a= 10 ,b = 20

not(a and b) 返回 False

        上面的实例有些同学可能并不是太理解,我这边解释一下:

        有些不负责任的 Python 教程说:Python 逻辑运算符用于操作 bool 类型的表达式,执行结果也是 bool 类型,这两点其实都是错误的!

        Python 逻辑运算符可以用来操作任何类型的表达式,不管表达式是不是 bool 类型;同时,逻辑运算的结果也不一定是 bool 类型,它也可以是任意类型。这就是我些上面表格里面的实例的原因,

        那么问题的重点就是:1、在 Python 中,and 和 or 不一定会计算右边表达式的值,有时候只计算左边表达式的值就能得到最终结果。2、and 和 or 运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终结果。这里就能解释为什么在上面表格里的实例并没有返回布尔值而是返回a的值或者b的值。这里注意not运算,它是返回布尔值的。


        以上两点极其重要,了解这两点不会让你在使用逻辑运算的过程中产生疑惑。

        有的同学可能看到这里就已经蒙圈了!别着急,我们再说一下逻辑运算符的本质:

        对于and运算 ,两边的值都是真,它的输出(返回)值才是真,其余都返回为假。换句话说,and的计算,两边有一个是假,那计算结果就是假。所以 Python 按照下面的规则执行 a and b运算:

        1、如果and的左边表达式的值为假,那么我们是不是没有必要再往下运算了!因为无论右边是什么,都不会影响计算结果。那这个时候,and会把左边表达式a的值作为返回值。而不是返回False!

        2、如果左边a表达式的值为真,那么最终值是不能确定的,and 会继续计算右边b表达式的值,并将右边表达式b的值作为最终结果。下载再去看一下上面表格的计算就能理解为什么返回20了吧!


        对于 or 运算符,情况是类似的,两边的值都为假时最终结果才为假,只要其中有一个值为真,那么最终结果就是真,所以 Python 按照下面的规则执行a  or b 运算:

        1、如果左边表达式a的值为真,那么就不用计算右边表达式的值了,因为不管右边表达式b的值是什么,都不会影响最终结果,最终结果都是真,此时 or 会把左边表达式a的值作为最终结果。

        2、如果左边表达式a的值为假,那么最终值是不能确定的,or 会继续计算右边表达式b的值,并将右边表达式b的值作为最终结果。


我们写几段代码验证上面的结论:

1、and运算:

#python 3.10

# and实例

a = "字符串"    #a的布尔值是Ture
b = 200        #b的布尔值是Ture
c = False      #再定义一个c,布尔类型是False

print(a and b)     #a和b都是真,所以输出右边b的值:200
print(a and c)     #a是真,c是假,此时输出c的值:False
print(b and a)     #我们把b在前,a在后,同样两个都是真,此时输出a的值:"字符串"
print(b and c)     #b是真,c是假,此时输出c的值:False
print(c and a)     #c是假,没必要再计算后面是否是真假,因为都不会影响输出的值:False




运行结果(and实例):

#运行结果(and实例)

200
False
字符串
False
False

进程已结束,退出代码0

2、下面再验证or运算:

#python 3.10

# or 实例

a = "字符串"    #a的布尔值是Ture
b = 200        #b的布尔值是Ture
c = False      #再定义一个c,布尔类型是False

print(a or b)     #a和b都是真,所以输出左边a的值:"字符串"
print(a or c)     #a是真,c是假,有一个真就是真,此时输出左边a的值:"字符串"
print(b or a)     #我们把b在前,a在后,同样两个都是真,此时输出b的值:200
print(b or c)     #b是真,c是假,有一个真就是真,因为c的值不影响结果,此时输出b的值:200
print(c or a)     #c是假,a的值可以影响到最终结果的真假,a是真,那么输出左边a的值:"字符串"

运行结果(or实例):

字符串
字符串
200
200
字符串

进程已结束,退出代码0

3、not运算

#python 3.10

# not 实例

a = "字符串"    #a的布尔值是Ture
b = 200        #b的布尔值是Ture
c = False      #再定义一个c,布尔类型是False

print(not a)
print(not b)
print(not c)

#not运算,就只是咋计算它的bool值了

运算结果(not实例);

False
False
True

进程已结束,退出代码0

 

 

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全村最好捉的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值