python运算符—逻辑运算符

今天开始分享我讨厌的运算符 ,预计会持续很多天……

今天的干货就是「逻辑运算符」逻辑运算符返回布尔值,True或False。

回忆一下知识点,python规定:

①任何非数字0和非空对象都为True。

②数字0,空(null)对象和特殊对象None都为False。

③True,False首字母必须大写。

1、逻辑与(a and b)

只有当[a] 和[b] 同时为真的时候,[a and b] 才为真 ,否则为假。所以当第一个值为假的时候,即不在继续进行b值的判断与运算,逻辑与是找假的运算。

例子①


result_0 = True and False
result_1 = False and True
result_2 = True and True
result_3 = False and False

print("True and False 的结果为:{}".format(result_0))
print("False and True 的结果为:{}".format(result_1))
print("True and True 的结果为:{}".format(result_2))
print("False and False 的结果为:{}".format(result_3))

执行结果:


True and False 的结果为:False
False and True 的结果为:False
True and True 的结果为:True
False and False 的结果为:False

若[a] 和[b]都是非0的数字,[a and b] 为右侧的数字b。若[a] 和[b]是至少有一个数字0,[a and b] 为数字0。

例子②


result_0 = 0 and 0
result_1 = 0 and 1
result_2 = 0 and 2
result_3 = 1 and 2
result_4 = 1 and 0
result_5 = 2 and 0
result_6 = 2 and 1

print("0 and 0 的结果为:{}".format(result_0))
print("0 and 1 的结果为:{}".format(result_1))
print("0 and 2 的结果为:{}".format(result_2))
print("1 and 2 的结果为:{}".format(result_3))
print("1 and 0 的结果为:{}".format(result_4))
print("2 and 0 的结果为:{}".format(result_5))
print("2 and 1 的结果为:{}".format(result_6))

执行结果:


0 and 0 的结果为:0
0 and 1 的结果为:0
0 and 2 的结果为:0
1 and 2 的结果为:2
1 and 0 的结果为:0
2 and 0 的结果为:0
2 and 1 的结果为:1

若[a] 和[b]都是非空的字符串,[a and b] 为右侧的b字符串。若[a] 和[b]是至少有一个空字符串,[a and b] 输出空行。

例子③


result_0 = '' and ''
result_1 = '' and 'a'
result_2 = '' and 'aa'
result_3 = 'a' and 'aa'
result_4 = 'a' and ''
result_5 = 'aa' and ''
result_6 = 'aa' and 'a'
print("'' and '' 的结果为:{}".format(result_0))
print("'' and 'a' 的结果为:{}".format(result_1))
print("'' and 'aa' 的结果为:{}".format(result_2))
print("'a' and 'aa' 的结果为:{}".format(result_3))
print("'a' and '' 的结果为:{}".format(result_4))
print("'aa' and '' 的结果为:{}".format(result_5))
print("'aa' and 'a' 的结果为:{}".format(result_6))

执行结果:

'' and '' 的结果为:
'' and 'a' 的结果为:
'' and 'aa' 的结果为:
'a' and 'aa' 的结果为:aa
'a' and '' 的结果为:
'aa' and '' 的结果为:
'aa' and 'a' 的结果为:a

2、逻辑或(a or b)

只要[a] 和[b] 中有一个为真,[a and b] 就为真,其余情况都是假。也就是说当[a] 和[b] 都是假的时候,[a and b] 才是真。

例子①


result_0 = True or False
result_1 = False or True
result_2 = True or True
result_3 = False or False

print("True or False 的结果为:{}".format(result_0))
print("False or True 的结果为:{}".format(result_1))
print("True or True 的结果为:{}".format(result_2))
print("False or False 的结果为:{}".format(result_3))

执行结果:

True or False 的结果为:True
False or True 的结果为:True
True or True 的结果为:True
False or False 的结果为:False

若[a] 和[b] 都是数字0,那么[a or b] 为数字0。若[a] 和[b]中只有一个为数字0,那[a or b] 返回非0是数字。若[a] 和[b] 都非数字0,那么[a or b] 为左侧的数字a。

例子②

result_0 = 0 or 0
result_1 = 0 or 1
result_2 = 0 or 2
result_3 = 1 or 2
result_4 = 1 or 0
result_5 = 2 or 0
result_6 = 2 or 1

print("0 or 0 的结果为:{}".format(result_0))
print("0 or 1 的结果为:{}".format(result_1))
print("0 or 2 的结果为:{}".format(result_2))
print("1 or 2 的结果为:{}".format(result_3))
print("1 or 0 的结果为:{}".format(result_4))
print("2 or 0 的结果为:{}".format(result_5))
print("2 or 1 的结果为:{}".format(result_6))

执行结果:


0 or 0 的结果为:0
0 or 1 的结果为:1
0 or 2 的结果为:2
1 or 2 的结果为:1
1 or 0 的结果为:1
2 or 0 的结果为:2
2 or 1 的结果为:2

若[a] 和[b]都是非空的字符串,[a or b] 为左侧的b字符串。若[a] 和[b]是至少有一个空字符串,[a or b] 输出非空的那个字符串。若[a] 和[b]都是空的字符串,[a or b] 输出空行。

例子③


result_0 = '' or ''
result_1 = '' or 'a'
result_2 = '' or 'aa'
result_3 = 'a' or 'aa'
result_4 = 'a' or ''
result_5 = 'aa' or ''
result_6 = 'aa' or 'a'

print("'' or '' 的结果为:{}".format(result_0))
print("'' or 'a' 的结果为:{}".format(result_1))
print("'' or 'aa' 的结果为:{}".format(result_2))
print("'a' or 'aa' 的结果为:{}".format(result_3))
print("'a' or '' 的结果为:{}".format(result_4))
print("'aa' or '' 的结果为:{}".format(result_5))
print("'aa' or 'a' 的结果为:{}".format(result_6))

执行结果:


'' or '' 的结果为:
'' or 'a' 的结果为:a
'' or 'aa' 的结果为:aa
'a' or 'aa' 的结果为:a
'a' or '' 的结果为:a
'aa' or '' 的结果为:aa
'aa' or 'a' 的结果为:aa

当[a]和[b]两值非0或非False,[a or b]取左侧值a。当[a]和[b]一值非0或非False,另一值为0或False, [a or b]取非0或True。当a]和[b]为 0,False, [a or b]为右侧值b。

例子④

result_0 = 2 or True
result_1 = True or 2
result_2 = 0 or 2
result_3 = False or 2
result_4 = 2 or 0
result_5 = 2 or False
result_6 = 0 or False
result_7 = False or 0

print("2 or True 的结果为:{}".format(result_0))
print("True or 2 的结果为:{}".format(result_1))
print("0 or 2 的结果为:{}".format(result_2))
print("False or 2的结果为:{}".format(result_3))
print("2 or 0 的结果为:{}".format(result_4))
print("2 or False 的结果为:{}".format(result_5))
print("0 or False 的结果为:{}".format(result_6))
print("False or 0 的结果为:{}".format(result_7))

执行结果


2 or True 的结果为:2
True or 2 的结果为:True
0 or 2 的结果为:2
False or 2的结果为:2
2 or 0 的结果为:2
2 or False 的结果为:2
0 or False 的结果为:False
False or 0 的结果为:0

3、非(not a)

逻辑非是取反运算。 [a] 为真,[not a] 就为真。 [a] 为假,[not a] 就为假。

对于布尔值,非运算直接对其进行取反操作,True变False,False变True。对于非布尔值,非运算先将其转换成布尔值,再取反。

对于字符串,有内容为True,空字符串为False。对于数字,0 为 False ,其它 为 True 。

例子①:、


>>> not 0
True
>>> not 1
False
>>> not -1
False

>>> not []
True
>>> not [0]
False
>>> not [1]
False

>>> not ''
True
>>> not '01'
False
>>> not '1'
False

>>> not ()
True
>>> not (0)
True
>>> not (1)
False

>>> not True
False
>>> not False
True

● ● ●

python对非布尔值的与或非运算会将其当作布尔值运算,最终会返回原值。
1)与运算是找False。若第一个值是False,直接返回第一个值,也不再计算第二个值,否则返回第二个值。
2)或运算是找True。若第一个值是True,直接返回第一个值,也不再计算第二个值,否则返回第二个值。
3)非运算是取反。

参考文章:python运算符—逻辑运算符
python运算符—逻辑运算符_第1张图片

你可能感兴趣的:(python)