#Python中布尔类型False和True

Python中布尔类型

布尔类型只有True(正确)和False(错误)两种值,但是布尔类型有以下几种运算:
True:一个条件正确,Python把1和其他数值和非空字符串都看成 True,
False:一个条件错误,Python把0、空字符串’'和None看成 False

1.与运算:只有两个布尔值都为 True 时,计算结果才为 True。

print(True and True)			#(输出)True
print(True and False)			#(输出)False
print(False and True)			#(输出)False
print(False and False)			#(输出)False

2.或运算:只要有一个布尔值为 True,计算结果就是 True。

print(True and True)			#(输出)True
print(True and False)			#(输出)True
print(False and True)			#(输出)True
print(False and False)			#(输出)False

3.非运算:把True变为False,或者把False变为True:

print(not True)					#(输出)False
print(not False)				#(输出)True

4.布尔类型还可以与其他数据类型做 and、or和not运算

a = True
print (a and 'a=T' or 'a=F')
#(输出)a=T

出现上诉情况是因为Python把0、空字符串’'和None看成 False,其他数值和非空字符串都看成 True,所以:
True and ‘a=T’ 计算结果是 ‘a=T’
继续计算 ‘a=T’ or ‘a=F’ 计算结果还是 ‘a=T’
5.True和False的运算情况
当True和False遇到int类型 进行运算时(+ - * / ** 等),True看成1,False看成0

print(True + 3)
#(输出)4
print(False + 3)
#(输出)3
print('aaz' > 'aba')
#(输出)False
print( 3.2-True)
#(输出)2.2
print( 3.2*True)
#(输出)3.2
print( 3.2/True)
#(输出)3.2
print('h' > 1)
#(输出)TypeError: '>' not supported between instances of 'str' and 'int'    #报错,不是相同类型不能比较
print(False + "asd")
#(输出)TypeError: unsupported operand type(s) for +: 'bool' and 'str'
#报错不支持类型+bool 和strTypeError: unsupported operand type(s) for +: 'bool' and 'str' 

上述结果,又涉及到 and 和 or 运算的一条重要法则:短路计算。

  1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

  2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。

所以用Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。

猜你喜欢

转载自blog.csdn.net/weixin_43097301/article/details/82917852
今日推荐