本文来自异想之旅公开发布的Python教程,原文地址:https://www.yuque.com/yxzl/python
通常情况下,逻辑运算返回的值是布尔(bool)类型。
数值判断
我们可以对数字进行大小判断:
a = 1
b = 1.0
c = 3.14
print(a == b) # 判断a和b是否相等,输出:True
print(a != c) # 判断a和b是否不相等,输出:True
print(a < c) # 判断a是否小于c,输出:True
print(a > c) # 判断a是否大于c,输出:False
print(a <= b) # 判断a是否小于等于b,输出:True
print(b <= c) # 判断b是否小于等于c,输出:True
由上例可得:
- 数据类型
int
和float
不影响数值大小的比较 - 判断是否相等使用
==
而非=
,因为=
在 Python 中已经被变量赋值操作使用
字符串判断
下面是一个简单的示例,用于判断两个字符串的内容是否相同:
print("HelloWorld" == 'HelloWorld') # True
print('Hello' != "Hello") # False
更多的时候,我们通过字符串的 .isxxx()
方法来对其的值进行一些判断校验,具体可参考 1.5 章节的“字符串方法”部分。
not 取反
a, b = 5, 10 # 一个Python风格的多变量赋值语句,记一下就好
print(a > b) # False
print(not a > b) # True
针对有其它编程语言基础者:
not
就相当于其它编程语言中的!
not
语句可以将一个布尔值取反操作。
print(not 0) # True
print(not '123') # False
print(not 3.14) # False
not
也可以直接处理一个其它数据类型,具体操作是先将其强制转换为 bool
类型,然后再取反。
关于其它数据类型强制转换为 bool
后值为多少的问题,详见 1.2 章节的 例 04 。
成员运算符
除了大小之外,一个元素与一个序列的关系也是逻辑运算的重要部分。这么说比较抽象,我们来看两个例子。
判断元素是否在列表中
a = [1, 2, 3, 4]
print(1 in a) # True
print(5 in a) # False
判断字符串是否被另一个字符串包含
a = 'ABCDEFG'
print('DEF' in a) # True
print('FGH' in a) # False
print(not 'HIJ' in a) # True
print('HIJ' not in a) # True
由此例中可以看到, not
语句可以与其它语句组合使用。不仅可以如第五行这样放在整个逻辑运算语句前面,也可以像第六行这样直接组合成 not in
,使逻辑更清晰。
and 和 or
搭配逻辑运算
分别表示“与”(同时成立)和“或”(成立至少一个),也非常好理解,直接上代码
print(1 < 2 and 2 < 3) # True
print(1 < 2 and 3 < 2) # False
print(1 < 2 or 3 < 2) # True
print(1 < 2 or 3 < 2 and 4 < 5) # True
搭配数值
“搭配数值”本质上和“搭配逻辑运算”的原理是一样的。and
和or
并非返回bool
类型,而是返回最后一个(and
语句)或第一个(or
语句)在bool
类型下为True
的数据的实际值。
print('Hello' and 'World') # World
print('Hello' or 'World') # Hello
print('' or 1) # 1
更多类似的例子可以自己尝试。
运算优先级问题
大多数数值运算 > 大小判断 > not
> and
or
(具体请见 1.3 章节末尾的图片)
如果需要改变顺序,与数值运算相同,请使用小括号。