(11)运算符(优先级)


(一)算数运算符: + - * / // (取整)%(取余) **(幂运算)

 加减乘除就不说了,和数学当中的一样,这里重点说下//,%和**

 (1)// (取整数) 两个数在进行地板除的时候,有一个数是小数,就在最后的结果上加.0

var1 = 10
var2 = 5
var3 = 3.5
res1 = var1 // var2
res2 = var1 // var3
print(res1)
print(res2)
执行结果
2
2.0

    (2)% 取余

res1 = 10 % 3.5
res2 = 99 % 7
res3 = -99 % 7
res4 = 99 % -7
print(res1)
print(res2)
print(res3)
print(res4)

 执行结果 

3.0
1
6
-6

# 再来看下执行结果,是不是一脸懵逼,小学数学是不是感觉白学了,想了半天之后.....瞎说,小学老师可不教这个,算了,不卖关子了
第一个和第二个执行结果应该都没问题
第三个 :先算99%7 = 1,除数是负数,在余数前加上-号,然后加上被除数,所以结果是 -1+7 = 6
第四个 :先算99%7 = 1,被除数是负数,在被除数前加上-号,然后加上余数,所以结果是 1-7 = -6
双击6666了..............老铁
(3) ** 幂运算
print(2**3)
print(4**3)

执行结果:
8
64

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

# 比较运算符只会产生2个结果  要么True 要么False
var1 = 15
var2 = 18
res = var1 > var2
print(res) # False
res = var1 < var2
print(res) # True
res = var1 >= 15  # 只要满足一个条件即为真
print(res) # True
res = var1 <= 15  
print(res) # True
res = var1 == var2  # ==是判断两个值是否相等(is是判断两个元素id值是否一致,返回True或False)
print(res) # False
res = var1 != var2  # 不等于 
print(res) # True

(三)赋值运算符: = += -= *= /= //= %= **=

var1 = 9
var2 = 5
res = var1
print(res)
var1 += var2  # var1 = var1 + var2
print(var1)
var1 -= var2  # var1 -= var2
print(var1)
var1 *= var2  # var1 *= var2
print(var1)
var1 /= var2  # var1 = var1 / var2
print(var1)
var1 //= var2  # var1 = var1 // var2
print(var1)
var1 %= var2  # var1 %= var2
print(var1)
var1 **= var2  # var1 **= var2
print(var1)

执行结果
9
14
9
45
9.0
1.0
1.0
1.0
 
 

(四)成员运算符: in 和 not in (针对于容器型数据),判断某个元素在不在某个容器里面

#(1)str  字符串需要是一个连续的片段
strvar = "如果遇到你是一种错,我宁愿一错再错"
res1 = "你" in strvar
res2 = "遇到" not in strvar
res3 = "我一" in strvar
print(res1)   # True
print(res2)   # False
print(res3)   # False
#(2)list tuple set
listvar = ["周全","陈鹏","陈根基"]
res = "周全" in listvar
print(res) # True
tuplevar = "王新元","叶欣荣","秋波好","刘鹏程"
res = "叶欣荣" not in tuplevar
print(res) # False
setvar = {'周立飞','高辉'}
res =  "高辉" in  setvar
print(res) # True
#(3)dict  注意 : 判断的是键 不是值
dictvar = {"zdx":"无用","gss":"石阡","mlh":"杜十娘"}
res = "杜十娘" in dictvar
res = "mlh" not in dictvar  # True
print(res)
 

(五)身份运算符: is 和 is not (检测两个数据在内存当中是否是同一个值,返回True或False)

var1 = 56
var2 = 56
res1 = var1 == var2  # (判断两个值是否相等)
res2 = var1 is var2  # (判断两个值得地址是否相等)
res3 = var1 is not var2
print(res1)
print(res2)
print(res3)
执行结果
True
True
False        

 (六)逻辑运算符: and or not

# (1)and 逻辑与
# 全真则真,一假则假
res1 = True and True
res2 = False and True
res3 = False and False
res4 = True and False
print(res1) # True
print(res2) # False
print(res3) # False
print(res4) # False
# (2)or 逻辑或 # 全假则假,一真则真 res5 = True or True res6 = True or False res7 = False or True res8 = False or False print(res5) # True print(res6) # True print(res7) # True print(res8) # False
#(3)not 逻辑非 相当于取反 res9 = not True res10 = not False print(res9) # False print(res10) # True # (4)逻辑短路 ''' False and 布尔 在and左边如果时False 逻辑短路 右侧不执行 True or 布尔 在or左边如果是True 逻辑短路 右侧不执行 在开发当中 ,当成"开关"使用 ''' False and print(123) # 逻辑短路 # False True or print(456) # 逻辑短路 # True True and print(789) # 789
# 逻辑运算符的优先级 () > not > and > or 括号的优先级是最高的

(七)位运算符: & | ~ ^ << >> 

(1)按位与 &,两者都有,返回真
var1 = 19
var2 = 15
res = var1 & var2
print(res) # 3
"""
	000000010011
	000000001111
	000000000011  # 3
"""
(2)按位或 | 只要一个有,返回真
res = var1 | var2
print(res) # 31
'''
	000000010011
	000000001111
	000000011111  # 31
'''
(3)按位异或 ^ "如果两者不相同,返回真,两者相同返回假
res = var1 ^ var2
print(res)  # 28
'''
	000000010011
	000000001111  
    000000011100 # 28
'''
(4)<<  相当于 5 乘以 2的2次幂
res = 5 << 2   #  20
res = 4 << 3  # 4乘以2的3次幂
print(res)  # 32
"""
000000101  #  相当于101向左移动了2个二进制位
000010100  #  20
"""
(5)>>  相当于 5 除以 2的1次幂
res = 5 >> 1
print(res)  # 2
"""
0000101 # 相当于101向右移动了1个二进制位
0000010  # 2
"""
(6)~ 按位非 (针对于补码来进行操作 ,连符号位都要改变) 公式 -(n+1)
res = ~19
print(res)  # -20
"""
000000000010011 (补码)
111111111101100 (按位非-->取反作为新的补码计算)

111111111101100  (给补码求原码)
100000000010011  (反码+1)
100000000010100  (原码)  => -20
按位非操作的是补码,如果实在记不住就记住公式: -(n+1)
"""
所有运算符的优先级:
小括号的优先级最高 () 
** 符号优先级最高
=  符号优先级最低
乘,除 > 加减
() > not > and > or 
(<< >> ) > & > ^ > |
除此之外剩下的运算符参考以下:
算术运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
赋值运算符单独拿出来 , 用来把最后的结果进行赋值的

练习: 计算 4>5 and 5 <9>5<3 or 1>2 and 3<=3的结果

相当于: 4>5 and (5 <9 and 9 >5and 5<3) or 1>2 and 3<=3

    False and False or False and True

    False

猜你喜欢

转载自www.cnblogs.com/lyj910313/p/10798223.html