Python中真假判断(and-or)

目录

一、布尔类型

二、Python2与Python3中区别

三、真假判断

一、布尔类型

布尔类型包括的对象仅可能为True或False,这个类型主要用于布尔表达式。

python中提供了一系列布尔比较和逻辑运算。

布尔运算:

大于,a>100            大于等于,a>=100

小于,a<100           小于等于,a<=100

等于,a==100         不等于,a!=100

逻辑运算:

逻辑非,not a

逻辑与,a and b

逻辑或,a or b

二、Python2与Python3中区别

在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。

在Python3中把 True 和 False 定义成关键字了,但他们的值还是1和0。bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True。

三、真假判断

1、python会把数字0,0.0,空字符串、空值none、空对象(包括空元组、空集合、空列表)当作False,其他当作True。

>>> print(not 0)
True
>>> print(not 0.0)
True
>>> print(not [])
True
>>> print(not None)
True
>>> print(not ())
True
>>> print(not {})
True
>>> print(not '')
True
#######注意对象中不为空的时候
>>> print(not [0])
False
>>> print(not [1])
False

2、逻辑运算and-or

(1)expr1 and expr2     

如果expr1为真,表示会去处理expr2并返回expr2的值;

如果expr1为假,表示会直接返回expr1的值,而不会去处理expr2。

>>> print(True and 0)
0
>>> print(True and not 0)
True
>>> print(False and not 0)
False

(2)expr1 or expr2

如果expr1为真,表示会直接返回expr1的值,而不会去处理expr2;

如果expr1为假,表示会去处理expr2并返回expr2的值。

>>> print(True or 0)
True
>>> print(False or 0)
0

(3)多个and:expr1 and expr2 and expr3

and自左向右扫描布尔表达式,如果所有值为真,则返回最后一个为真的表达式,如果为假,则返回第一个为假的表达式。

如果expr1为真,则expr1 and expr2会返回expr2的值,这个时候expr1 and expr2 and expr3可以变换为expr2 and expr3,然后再判断expr2的真假,重复(1)即可;

如果expr1为假,则expr1 and expr2会返回expr1的值,这个时候expr1 and expr2 and expr3可以变换为expr1 and expr3,然后再判断expr1的真假,重复(1)即可;

>>> print(1 and 0 and 1)
0
>>> print(1 and 1 and 0)
0
>>> print(0 and 0 and 1)
0
>>> print(0 and 1 and 1)
0
>>> print(1 and 1 and 1)
1

(4)多个or:expr1 or expr2 or expr3

or的使用与and正好相反,自左向右计算整个布尔表达式,如果有为真的值,那么立刻返回第一个为真的值,如果整个表达式为假,则返回最后一个为假的值。

如果expr1为真,则expr1 or expr2会返回expr1的值,这个时候expr1 or expr2 or expr3可以变换为expr1 or expr3,然后再判断expr2的真假,重复(2)即可;

如果expr1为假,则expr1 or expr2会返回expr2的值,这个时候expr1 or expr2 or expr3可以变换为expr2 or expr3,然后再判断expr1的真假,重复(2)即可;

>>> print(1 or 0 or 1)
1
>>> print(1 or 1 or 0)
1
>>> print(0 or 0 or 1)
1
>>> print(0 or 1 or 1)
1
>>> print(0 or 0 or 0)
0

(5)and-or并列:expr1 and expr2 or expr3

与前面多个and多个or的思路一样:

若expr1为真,则expr1 and expr2会返回expr2的值,这个时候expr1 and expr2 or expr3可以变换为expr2 or expr3,再重复(2)即可;

若expr1为假,则expr1 and expr2会返回expr1的值,个时候expr1 and expr2 or expr3可以变换为expr1 or expr3,再重复(2)即可;

>>> print(1 and 1 or 0)
1
>>> print(1 and 0 or 1)
1
>>> print(0 and 1 or 0)
0
>>> print(0 and 0 or 1)
1

猜你喜欢

转载自blog.csdn.net/qq_54381110/article/details/131228537