Python中如何正确使用逻辑运算符?

2026-06-11 04:081阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1567个文字,预计阅读时间需要7分钟。

Python中如何正确使用逻辑运算符?

在高中数学中,我们学习过逻辑运算,例如:p + q 为真命题,q + p 为假命题,p 且 q 为假,p 或 q 为真,非 q 为真。Python 也有类似的逻辑运算符,请看下表:

| 运算符 | 符号 | 功能 || :---: | :---: | :---: || 且 | and | 当两个条件都为真时,结果为真 || 或 | or | 当至少一个条件为真时,结果为真 || 非 | not | 取反,真变假,假变真 |

高中数学中我们就学过逻辑运算,例如 p 为真命题,q 为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。Python 也有类似的逻辑运算,请看下表:

表 1 Python 逻辑运算符及功能 逻辑运算符 含义 基本格式 说明 and 逻辑与运算,等价于数学中的“且” a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。 or 逻辑或运算,等价于数学中的“或” a or b 当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。 not 逻辑非运算,等价于数学中的“非” not a 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反。
逻辑运算符一般和关系运算符结合使用,例如:

14>6 and 45.6 > 90

14>6 结果为 True,成立,45.6>90 结果为 False,不成立,所以整个表达式的结果为 False,也即不成立。

再看一个比较实用的例子:

age = int(input("请输入年龄:")) height = int(input("请输入身高:")) if age>=18 and age<=30 and height >=170 and height <= 185 : print("恭喜,你符合报考飞行员的条件") else: print("抱歉,你不符合报考飞行员的条件") 可能的运行结果:

请输入年龄:23↙
请输入身高:178↙
恭喜,你符合报考飞行员的条件

Python中如何正确使用逻辑运算符?

打脸某些 Python 教程

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

Python 逻辑运算符可以用来操作任何类型的表达式,不管表达式是不是 bool 类型;同时,逻辑运算的结果也不一定是 bool 类型,它也可以是任意类型。请看下面的例子:

print(100 and 200) print(45 and 0) print("" or "c.biancheng.net/python/") print(18.5 or "c.biancheng.net/python/") 运行结果:

200
0
c.biancheng.net/python/
18.5

你看,本例中 and 和 or 运算符操作的都不是 bool 类型表达式,操作的结果也不是 bool 值。

逻辑运算符的本质

在 Python 中,and 和 or 不一定会计算右边表达式的值,有时候只计算左边表达式的值就能得到最终结果。

另外,and 和 or 运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终结果。

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

对于 and 运算符,两边的值都为真时最终结果才为真,但是只要其中有一个值为假,那么最终结果就是假,所以 Python 按照下面的规则执行 and 运算:
  • 如果左边表达式的值为假,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是假,此时 and 会把左边表达式的值作为最终结果。
  • 如果左边表达式的值为真,那么最终值是不能确定的,and 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。

对于 or 运算符,情况是类似的,两边的值都为假时最终结果才为假,只要其中有一个值为真,那么最终结果就是真,所以 Python 按照下面的规则执行 or 运算:
  • 如果左边表达式的值为真,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是真,此时 or 会把左边表达式的值作为最终结果。
  • 如果左边表达式的值为假,那么最终值是不能确定的,or 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。

使用代码验证上面的结论:

url = "c.biancheng.net/cplus/" print("----False and xxx-----") print( False and print(url) ) print("----True and xxx-----") print( True and print(url) ) print("----False or xxx-----") print( False or print(url) ) print("----True or xxx-----") print( True or print(url) ) 运行结果:

----False and xxx-----
False
----True and xxx-----
c.biancheng.net/cplus/
None
----False or xxx-----
c.biancheng.net/cplus/
None
----True or xxx-----
True

第 4 行代码中,and 左边的值为假,不需要再执行右边的表达式了,所以 print(url) 没有任何输出。

第 6 行代码中,and 左边的值为真,还需要执行右边的表达式才能得到最终的结果,所以 print(url) 输出了一个网址。

第 8、10 行代码也是类似的。

本文共计1567个文字,预计阅读时间需要7分钟。

Python中如何正确使用逻辑运算符?

在高中数学中,我们学习过逻辑运算,例如:p + q 为真命题,q + p 为假命题,p 且 q 为假,p 或 q 为真,非 q 为真。Python 也有类似的逻辑运算符,请看下表:

| 运算符 | 符号 | 功能 || :---: | :---: | :---: || 且 | and | 当两个条件都为真时,结果为真 || 或 | or | 当至少一个条件为真时,结果为真 || 非 | not | 取反,真变假,假变真 |

高中数学中我们就学过逻辑运算,例如 p 为真命题,q 为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。Python 也有类似的逻辑运算,请看下表:

表 1 Python 逻辑运算符及功能 逻辑运算符 含义 基本格式 说明 and 逻辑与运算,等价于数学中的“且” a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。 or 逻辑或运算,等价于数学中的“或” a or b 当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。 not 逻辑非运算,等价于数学中的“非” not a 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反。
逻辑运算符一般和关系运算符结合使用,例如:

14>6 and 45.6 > 90

14>6 结果为 True,成立,45.6>90 结果为 False,不成立,所以整个表达式的结果为 False,也即不成立。

再看一个比较实用的例子:

age = int(input("请输入年龄:")) height = int(input("请输入身高:")) if age>=18 and age<=30 and height >=170 and height <= 185 : print("恭喜,你符合报考飞行员的条件") else: print("抱歉,你不符合报考飞行员的条件") 可能的运行结果:

请输入年龄:23↙
请输入身高:178↙
恭喜,你符合报考飞行员的条件

Python中如何正确使用逻辑运算符?

打脸某些 Python 教程

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

Python 逻辑运算符可以用来操作任何类型的表达式,不管表达式是不是 bool 类型;同时,逻辑运算的结果也不一定是 bool 类型,它也可以是任意类型。请看下面的例子:

print(100 and 200) print(45 and 0) print("" or "c.biancheng.net/python/") print(18.5 or "c.biancheng.net/python/") 运行结果:

200
0
c.biancheng.net/python/
18.5

你看,本例中 and 和 or 运算符操作的都不是 bool 类型表达式,操作的结果也不是 bool 值。

逻辑运算符的本质

在 Python 中,and 和 or 不一定会计算右边表达式的值,有时候只计算左边表达式的值就能得到最终结果。

另外,and 和 or 运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终结果。

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

对于 and 运算符,两边的值都为真时最终结果才为真,但是只要其中有一个值为假,那么最终结果就是假,所以 Python 按照下面的规则执行 and 运算:
  • 如果左边表达式的值为假,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是假,此时 and 会把左边表达式的值作为最终结果。
  • 如果左边表达式的值为真,那么最终值是不能确定的,and 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。

对于 or 运算符,情况是类似的,两边的值都为假时最终结果才为假,只要其中有一个值为真,那么最终结果就是真,所以 Python 按照下面的规则执行 or 运算:
  • 如果左边表达式的值为真,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是真,此时 or 会把左边表达式的值作为最终结果。
  • 如果左边表达式的值为假,那么最终值是不能确定的,or 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。

使用代码验证上面的结论:

url = "c.biancheng.net/cplus/" print("----False and xxx-----") print( False and print(url) ) print("----True and xxx-----") print( True and print(url) ) print("----False or xxx-----") print( False or print(url) ) print("----True or xxx-----") print( True or print(url) ) 运行结果:

----False and xxx-----
False
----True and xxx-----
c.biancheng.net/cplus/
None
----False or xxx-----
c.biancheng.net/cplus/
None
----True or xxx-----
True

第 4 行代码中,and 左边的值为假,不需要再执行右边的表达式了,所以 print(url) 没有任何输出。

第 6 行代码中,and 左边的值为真,还需要执行右边的表达式才能得到最终的结果,所以 print(url) 输出了一个网址。

第 8、10 行代码也是类似的。