010 Python 运算符

(1)算数运算符: + 、-、 *、 /(结果为小数) 、//、 %、 **。

5  % 2 = 1
-5 % 2 = 1 #-1 + 2
5 % -2 = -1 #1 + (-2)
-5 % -2 = -1
num01 = 5
num02 = 2
print(num01 + num02) #7
print(num01 - num02) #3
print(num01 * num02) #10
print(num01 / num02) #2.5
print(num01 // num02) #2
print(num01 % num02) #1
print(num01 ** num02) #25

print(5%2) #1
print(-5%2) # -1 + 2 = 1
print(5%-2) # 1 + (-2) = -1
print(-5%-2) #-1

(2)比较运算符: >、 < 、>=、 <=、 ==、 !=

num03 = 5
num04 = 5
print(num03 > num04) #False
print(num03 < num04) #False
print(num03 >= num04) #True
print(num03 >= num04) #True
print(num03 == num04) #Ture
print(num03 != num04) #False

(3)赋值运算符: = 、+=、 -=、 *=、 /=、 //=、 %=、 **= #从右向左,将右侧的值赋值给左侧的值;

num05 = 52
num06 = 12
num05 += num06
print(num05) #52 +12 = 64

num05 -= num06
print(num05) #52 - 12 = 40

num05 *= num06
print(num05) #52*12 =624

num05 /= num06 #52 / 12 =4.3
print(num05)

num05 //= num06
print(num05) #52 // 12 = 4

num05 %= num06
print(num05) # 52 %= 12 = 4

num05 **= num06
print(num05) #52**12 =390877006486250192896

(4)成员运算符: in 和 not in (针对于容器型数据,在dict 判断时,是判断的字典的键,不判断值)

mess01 = '王'
mess03 = '刚'
mess02 = "大王,请进!"
mess04 = ['王刚','明天']

print(mess01 in mess02) #True
print(mess03 not in mess02) #True
print(mess01 not in mess04) #True
print('王刚' not in mess04) #False

(5)身份运算符: is 和 is not (检测两个数据在内存当中是否是同一个值)

#身份运算符  is   not is 主要判断内存地址是否一致
#在python3.6 中,同一个文件(模块)中 -5~~正无穷,值相同,id 相同
num07 = -52
num08 = -52
# print(num07 is num08) #False
#float 非负数,值相同,id一致
num09 = 2.2
num10 = 2.2
# print(num09 is num10) #True
# print(-3.2 is -3.2) #True
#bool 值相同,id 相同
mess05 = True
mess06 = True
# print(mess05 is not mess06) # False
#complex 实数+虚数 id永不相同,只有非负 虚数 值相同,id一致
com01 = 5+2j
com02 = 5+2j
com03 = -2j
com04 = -2j
com05 = 2j
com06 = 2j
print(com01 is com02) #False
print(com03 is com04) #False
print(com05 is com06) #True

#str 值相同,id 一致 空元祖id一致
mess07 = "王"
mess08 = "王"
tup01 = ()
tup02 = ()
print(mess07 is mess08) #True
print(tup01 is tup02) #True

#其他容器list、set()、dict、() 任何情况id不同(除空元组)
li01 = []
li02 = []
set01 = set()
set02 = set()
dic01 = {}
dic02 = {}
tup01 = (1,2)
tup02 = (1,2)
print(li01 is li02) #False
print(set01 is set02) #False
print(dic01 is dic02) #False
print(tup01 is tup02) #False

(6)逻辑运算符: () > not > and >or

not :真变假,假变真
print(not 1) #False
print(not 0) #True

and: 全真则真,一假则假;
print('a' and 'b') #b
print('a' and 'c') #c
print(1 and 1) #1
print(1 and 0) #0
print(0 and 1) #0
print(0 and 0) #0

or : 全假则假,一真则真
print(1 or 1) #1
print(1 or 0) #1
print(0 or 1) #1
print(0 or 0) #0
print('a' or 'b') #a
print( 0 or 'b') #b

逻辑短路:

“True or 表达式”
“False and 表达式”

print(1 or "中国加油!") #1 “中国加油!” 不会打印
print(0 or "中国加油!") #中国加油

print(1 and "中国加油!") #中国加油
print(0 and "中国加油!") #中国加油

逻辑运算优先级;() > not > and > or

mes01 = 11>22 or 23<23 and not 0 and 5243 > 312 or not 33
# False or False and not 0 and True or not 33
# False or False and True and True or False
# False or False and True or False
# Fales or False or False
# Fales
print(mes01) #Fales

(7)位运算符: & 、|、 ~、 ^、 <<、 >> :对数据的二进制进行操作

  • & 按位与:双1 为1 ,其他为0

  • | 按位或:逢1为1,双0为0

  • ^ 按位异:两值相同为0(False),不同为1(True)

  • << 左移:相当于乘法,值 * 2 的n次幂

  • >> 右移,相当于除法, 值// 2的n次幂
  • ~ 按位非:公式 -(n+1),根据值的二进制补码运算,安位取反,包括符号位

#& :按位与  双1为1,其他为0
num11 = 21
num12 = 12

print(num11 & num12) #4
# num11:00010101
# num12:00001100
# 00100 4

#| :按位或 逢1为1,双0为0
# print(num11 | num12) #29
# num11:00010101
# num12:00001100
# 00011101 #29
# print(0b11101) #29

#^ 按位异 ,两值相同为0(False),不同为真
print(num11 ^ num12) #25
# num11:00010101
# num12:00001100
# 00011001 #
print(0b11001) #25

#<< 左移 相当于乘法,值 乘以 2的n次幂;n代表位移的个数
num13 = 2
print(num13<<2) #2*2**2 = 8
print(num13<<3) #2*2**3 = 16
print(num13<<4) #2*2**4 = 32

#000010
#001000
#010000
print(0b10000)

#>> 右移 做除法,值 // 2的n次幂,n代表位移的个数
num14 = 10
print(num14 >> 1 ) #5
print(num14 >> 2 ) #2
print(num14 >> 3 ) #1
#001010
#000101
#000010
#000001

#~ 按位非 根据值的二进制补码运算,安位取反,包括符号位
#公式:-(n+1)
num15 = 20
print(~num15) #-21
#原码:0000...10100
#反码:0000...10100
#补码:0000...10100
# 1111...01011
# 1000...10101 #-21
print(0b10101)

num15 = -6
print(~num15) #5
#原码:1000...110
#反码:1111...001
#补码:1111...010
# 0000...101 #5

(4) 其他运算符 算数运算符 > 位运算符 > 比较运算符 > 身份运算符> 成员运算符 > 逻辑运算符 赋值运算符是最后算完进行赋值,做收尾工作的.

python运算符符号注意点
算数运算符 +、-、*、/、//(取整除)、%(取余)、**(幂运算)、 / 运算结果为:float
位运算符 & :按位与 | :按位或 ^:按位异 ~:按位非 << 左移 >> 右移 优先级 (<<或 >> ) > & > ^ > |
比较运算符 > 、<、 >=、<=、==、!= 比较运算符只会产生两个结果:True、False;== 比较两个值是否相等 != 比较两个值是否不同;
身份运算符 is 、not is is 和 is not 用来判断内存地址是否相同
成员运算符 in 、not in(结果:True or False) in 或 not in 判断某个值是否包含在(或不在)一个容器类型数据当中;
逻辑运算符 not 、and 、or 优先级 () > not > and > or
赋值运算符 =、+=、-=、*=、/=、//=、%=、**= #从右向左,将右侧的值赋值给左侧的值;a += 1 => a = a+1



posted @ 2020-07-02 18:18  VajraBoy  阅读(146)  评论(0编辑  收藏  举报