Python学习(3)|布尔值,运算符,短路问题

发布时间:2024年01月18日

21_布尔值本质-逻辑运算符-位运算符-比较运算符-短路问题

布尔值:

Python2中没有布尔值,直接用数字 0 表示False,用数字 1 表示True。

Python3中,把True和False定义成了关键字,但是他们的本质还是 1 和 0 ,甚至可以和数字相加。

a = True
b = 3
c = a + b       #c的值是4
print(c)
print('空字符串的布尔类型的值:',bool(""))      #False
print('空列表布尔类型的值:',bool([]))         #False
print('None布尔类型的值:',bool(None))        #False
print('0布尔类型的值:',bool(0))              #False
print('字符串True和False转成布尔都是True:',bool("False"))   #True

第 9 行(字符串True和False转成布尔都是True)解释

a = True
b = 5
print(a+b)         		    #结果是 6
if("False"):                #返回的是True
    print("我被执行了")      #因为返回True所以输出
if(""):                     #空字符串,返回的是False,
    print("我没有被执行")    #因为返回的是False所以不执行

在Python语言底层中,会将布尔值True看作 1 ,将布尔值False看作 0 ,尽管从表面上看,True和 1 、False和 0 是完全不相同的两个值,但实际上,它们是相同的。

在Python语言中,有一些特殊的布尔类型值为False,例如False、0、0.0、空值None、空序列对象(空列表、空元组、空集合、空字典、空字符串)、空range对象、迭代对象。其他情况,均为True。

运算符:

包括逻辑运算符;比较运算符;位运算符;加法操作补充;乘法操作补充;增强赋值运算符(补充);同一运算符;成员运算符

逻辑运算符:

运算符? ? ? ? ? ? ? ? ? ? ? ?格式? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 说明

or? ? ? ? 逻辑或? ? ? ? ? ??x or y? ? ? ? ? ? ? ? ? ? ? ? ? ? x为true则不计算y,直接返回true;x为false则返回y

and? ? ? 逻辑与? ? ? ? ? x and y? ? ? ? ? ? ? ? x为true则返回y的值;x为false,则不计算y,直接返回false

not? ? ? ? 逻辑非? ? ? ? ?not x? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? x为true返回false;x为false返回true

比较运算符:

所有比较运算符返回 1 表示真,返回 0 表示假。分别与特殊变量True和False等价,假设a为15,b为30:

运算符? ? ? ? ? ? ? ? ? ? ? ? 描述? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 实例

==? ? ? ? ? ? ? ? ? ? ? ? 等于-比较对象的值是否相等? ? ? ? ? ? ? ? ? ? ? ? (a==b)返回False

!=? ? ? ? ? ? ? ? ? ? ? ? ?不等于-比较两个对象的值是否相等? ? ? ? ? ? ? (a!=b)返回True

>? ? ? ? ? ? ? ? ? ? ? ? ? 大于-返回 x 是否大于 y? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (a>b)返回False

<? ? ? ? ? ? ? ? ? ? ? ? ? 小于-返回 x 是否小于 y? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (a<b)返回True

>=? ? ? ? ? ? ? ? ? ? ? ? 大于等于-返回 x 是否大于等于 y? ? ? ? ? ? ? ? ? ?(a>=b)返回False

<=????????????????????????小于等于-返回 x 是否小于等于 y? ? ? ? ? ? ? ? ? ? (a<=b)返回True

? ?

a = 4
print(a <= 30)
#关系运算符可以连用
if(3 < a < 10):
    print("a在3和10之间")

? ??

e = 100 < 200 and 50<(3/0)      #and前边是True,则继续执行判断后边的,会报错
print(e)
e = 100 > 200 and 50<(3/0)		#and前边是False,则后边不去执行,直接返回False
print(e)
f = 200
g = 50 < f <500
g2 = 50 < f and f < 500
print(g)        #结果True
print(g2)       #结果True

位运算符:

运算符? ? ? ? ? ? ? ? ? ? ? ? 描述

&? ? ? ? ? ?按位于运算符:参与运算的两个值,如果两个相应位都为 1 ,则该位的结果为 1 ,否则 0?

|? ? ? ? ? ? 按位或运算符:只要对应的二个二进位有一个为 1 时,结果就为 1?

^? ? ? ? ? ? 按位异或运算符:当两对应的二进制位相异时,结果为 1?

~? ? ? ? ? ?按位取反运算符:对数据的每个二进制取反,既把 1 变为 0 ,把 0 变为 1 ,x 类似于 -x-1

<<? ? ? ? ? 左移动运算符:运算符的每个二进制数全部左移若干位,由“<<”右边的数据指定移动的位数,高位丢弃,低位补 0?

>>? ? ? ? ? ?右移运算符:把“>>”左边运算数的每个二进制位全部右移若干位,“>>”右边的数指定移动的位数

a = 0b11001
b = 0b01000
print(bin(a|b))         #0b11001
print(bin(a&b))         #0b1000
print(bin(a^b))         #0b10001
print(3<<2)             #12
print(20>>1)            #10

加法操作补充-乘法操作补充:

数字相加 3+2 结果是 5

字符串拼接 "3" + "2" 结果是 "32"

列表、元组等合并 [10,20,30] + [5,10,100] 结果是 [10,20,30,5,10,100]

e = 3
f = 4
g = e + f
print(g)            #结果:7
a = "3"
b = "4"
c = a + b
print(c)            #结果:34
h = [10,20,30]
i = [5,10,100]
print(h + i)        #结果[10, 20, 30, 5, 10, 100]

数字相乘 3 * 2 结果是 6

字符串的复制 "sxt" * 3 结果是 "sxtsxtsxt"

列表、元组等复制 [10,20,30] * 3 结果是 [10,20,30,10,20,30,10,20,30]

d = 'I love U!'
print(d * 3)        #结果是I love U!I love U!I love U!

增强赋值运算符:

?!!!与 C 和 JAVA 不一样,Python不支持自增(++)和自减(--)

文章来源:https://blog.csdn.net/weixin_73921499/article/details/135635095
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。