前面我们所说进行数据类型转换的原因是不同类型的数据,它们的运算方式不同,那么下面我们来介绍数据之间运算所用的符号。
算数运算符主要就是我们数学上常用的一些符号,有加号+,减号-,乘号*,除号/,整除//,取余(取模)%,幂运算**
a = 5 b = 3 print(a+b) # 8 print(a-b) # 2 print(a*b) # 15 print(a/b) # 1.66666667 c = 6 d = 3 print(c/d) # 2.0 # python3中,两个整数相除,得到的结果会是一个浮点数 print(a//b)# 1 //表示取整数部分,向下取整 print(-5//2)# -3 print(a%b) # 2 %表示取余数部分 print(a**b)#125 表示5的3次方 x = 16 print(16**(1/2)) # 4.0( ) 里的内容代表运算优先级
不同类型的数字在进行混合运算时,整数将会转换成浮点数进行。
print(5**2/5) # 5.0在python中,字符串和数字之间不能使用加号连接
赋值运算符就是=,但是不同于数学中的等号,计算机编程的=是将等号右边的值赋给等号左边,等号的左边一定不能是常量或者表达式
1 = b # 报错 b = 1 print(b) x = 1 x = x+1 # 先把1赋给x,然后x+1再赋给x,x现在的值为2 print(x)# 2 # 复合赋值运算符 y = 1 y +=1 # 和上述等价,表示先把1赋给y,然后y+1再赋给y,y现在的值为2 print(y) # 2 y -=1 print(y)# 1 y *=2 print(y)# 2 y /=1 print(y) # 2.0 y **=3 print(y)# 8.0 y //=3 print(y) #2.0 y %=2 print(y) # 0.0比较运算符有大于>,小于<,大于等于>=,小于等于<=,不等于!=,等等==
print(2>1) # True print(4>9) # False print(5!=6) # True print(6==6) # True字符串之间使用比较运算符,会根据各个字符的编码值逐一比较。ASCII码表。
print('a'>'b') # False print('abc'>'b') # False print('a'==6) # False print('a'!=6)# True数字和字符串作==运算时结果为False,作!=运算时结果为True,其余运算会报错。
逻辑与and,逻辑或or,逻辑非not
print(2>1 and 3>4) # False print(2>1 or 3>4) # True print(not(2<4)) # False使用逻辑运算符得到的结果一定是布尔值吗,不一定!
逻辑运算符可以做取值。
# 逻辑与and运算中,会取第一个为False的值 print('hello' and [] and 'kdy') # [] # 如果所有的值均为True,那么取最后一个值 print('hello' and 'kdy' and 'daizi') # daizi # 逻辑或or运算中,会取第一个值为True的值 print('' or '家家' or 'hello') # 家家 # 当所有的值都是False,那么会取最后一个值 print('' or [] or {}) # {}将数字转化成二进制进行运算。
按位与& :同为1则为1,否则为0
按位或|:有1为1,没有1则为0
按位异或^:相同为0,不相同为1
按位左移<<:向左移几位,就在后面补几个0
按位右移>>:向右移几位,末尾就去掉几位数
a = 23 b = 15 print(bin(a)) # 0b10111 print(bin(b)) # 0b1111 print(a & b) # 0b111→7 print(a | b) # 0b11111→31 print(a ^ b) # 0b11000→24 x = 3 # 0b11 print(x<<3) # 0b11000→24 y = 13 # 0b1101 print(y>>2) # 0b11→3十进制的数x,左移n位后为x×2的n次方,例如上面3左移3位后得24,3×2的三次方为24。 十进制的数x,右移n位后为x/2的n次方,例如上述13右移2位后得3,13/2的2次方为3。
使用位运算,获取到十六进制颜色 0xF0384E 的RGB值,以十进制形式打印输出。
color = 0xF0384E red = color >> 16 print(red) green = color >> 8 & 0xFF print(green) blue = color & 0xFF print(blue)