(11)运算符(优先级)
Posted lyj910313
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(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
以上是关于(11)运算符(优先级)的主要内容,如果未能解决你的问题,请参考以下文章