Python 教程 - and 和 or

在Python编程中,逻辑判断是一个非常重要的部分,我们经常会用到andor这两个逻辑运算符。在Python中,这两个运算符不仅能够返回布尔值TrueFalse,还能根据运算结果返回相应的值。本文将详细介绍Python中andor的用法。

and 和 or 的使用原则

在 Python 里使用 and 与 or 返回值时,会遵照下列几个原则进行:

  • 使用 and 运算,如果全部都是 True,返回最右边 True 的值,否则返回第一个 False 的值。

  • 使用 or 运算,如果全为 False,返回最右边 False 的值,否则返回第一个 True 的值。

  • 元素除了 0、空 (空字串、空列表... 等)、None 和 False,其他在判断式里,全都是 True。

  • 越左方 (越前方) 会越先判断,逐步往右边判断。

  • 除了从左向右判断,同时使用多个 and、or 或 not,会先判断 not,再判断 and,最后再判断 or。

在判断式里使用 and 和 or

通常 and 和 or 会出现在逻辑判断里,下方的例子中使用 and 必须前后条件都满足,使用 or 只需要满足其中一项。

less 复制代码
a = 1
b = 2
c = 3
if a<b and a<c:
    print('ok1')    # 显示 ok1
if a<b or a>c:
    print('ok2')    # 显示 ok2

如果有好几个 or,越左方 (越前方) 会越先判断,逐步往右边判断。

ini 复制代码
a = 2
b = 3
c = 0
if a>b or a<c or a==2:
    print('ok1')       # 打印出 ok1

如果同时有 and 和 or,则会先判断 and,然后再接着从左向右判断:

css 复制代码
a = 2
b = 3
c = 0
if a>b or a<c or a==2 and b==4:    # 效果等同 (a>b or a<c) or (a==2 and b==4)
    print('ok1')
else:
    print('XXX')       # 打印出 XXX

下方的例子也会先判断 and,然后再接着从左向右判断:

css 复制代码
a = 2
b = 3
c = 0
if a>b or a<c and a==2 or b==4:    # 效果等同 (a>b or (a<c and a==2)) or b==4
    print('ok1')
else:
    print('XXX')       # 打印出 XXX

使用 and 和 or 返回值

下方的例子可以看出按照上面提到的原则,分别会返回不同的值:

ini 复制代码
a = 1 and 2 and 3
print(a)            # 3,全部都 True,所以返回最右边的值

b = 1 and 0 and 2
print(b)            # 0,遇到 0 ( False ),返回第一个 False 的值就是 0

c = 1 or 2 or 3
print(c)            # 1,全部都 True,所以返回第一个值

d = 1 or 0 or 3
print(d)            # 1,遇到 0 ( False ),返回第一个 True 的值就是 1

e = 1 and 2 or 3
print(e)            # 2,效果等同 1 and ( 2 or 3 )

f = 1 or 2 and 3
print(f)            # 1,效果等同 1 or ( 2 and 3 ),2 和 3 先取出 3 之后变成 1 or 3

g = 1 and 2 or 3 and 4 or 5
print(g)            # 2,效果等同 1 and ( 2 or ( 3 and ( 4 or 5 )))

如果将返回值应用在判断式里,就会直接当作 True 或 False 使用,例如下方的例子,会一次判断 a、b、c 三个变量的数值。

ini 复制代码
a = 1
b = 2
c = 3
if(a and b and c):   # 返回 3 --> True
    print('ok')      # 打印出 ok

改成下方的例子,就会打印出 not ok。

css 复制代码
a = 1
b = 0               # b 等于 0
c = 3
if(a and b and c):  # 返回 0 --> False
    print('ok')
else:
    rint('not ok')  # 打印出 not ok
相关推荐
qq_448011167 小时前
python HTTP请求同时返回为JSON的异常处理
python·http·json
棒棒的皮皮7 小时前
【OpenCV】Python图像处理几何变换之翻转
图像处理·python·opencv·计算机视觉
CodeCraft Studio8 小时前
国产化PPT处理控件Spire.Presentation教程:使用Python将图片批量转换为PPT
python·opencv·powerpoint·ppt文档开发·ppt组件库·ppt api
serendipity_hky8 小时前
【SpringCloud | 第5篇】Seata分布式事务
分布式·后端·spring·spring cloud·seata·openfeign
五阿哥永琪8 小时前
Spring Boot 中自定义线程池的正确使用姿势:定义、注入与最佳实践
spring boot·后端·python
Data_agent8 小时前
Python编程实战:从类与对象到设计优雅
爬虫·python
Swizard9 小时前
别再迷信“准确率”了!一文读懂 AI 图像分割的黄金标尺 —— Dice 系数
python·算法·训练
Victor3569 小时前
Netty(16)Netty的零拷贝机制是什么?它如何提高性能?
后端
Victor3569 小时前
Netty(15)Netty的线程模型是什么?它有哪些线程池类型?
后端
超级大只老咪9 小时前
数组的正向存储VS反向存储(Java)
java·开发语言·python