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

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

>=                        大于等于-返回 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!

增强赋值运算符:

Python学习(3)|布尔值,运算符,短路问题_第1张图片

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

你可能感兴趣的:(python,学习,开发语言,pycharm)