⽐较运算符,逻辑运算符,位运算符,运算符优先级
⽐较运算符
以下假设变量a为10,变量b为20:
运算
符
描述实例==等于 - ⽐较对象是否相等(a == b) 返回 False.
!=不等于 - ⽐较两个对象是否不相等(a != b) 返回 true.
<>不等于 - ⽐较两个对象是否不相等(a <> b) 返回 true。这个运算符类似 !=
。
>⼤于 - 返回x是否⼤于y(a > b) 返回 False。
<⼩于 - 返回x是否⼩于y。所有⽐较运算符返回1表⽰真,返回0表⽰假。这分别与特殊的变量True和
False等价。
(a < b) 返回 true。
>=⼤于等于 - 返回x是否⼤于等于y。(a >= b) 返回 False。
<=⼩于等于 - 返回x是否⼩于等于y。(a <= b) 返回 true。逻辑运算符
运算符逻
辑运算符优先级按从高到低排列
表
达
式
描述实
and
x
and
y
只要有⼀个运算数是False,结果就是False; 只有所有的运算数都为True
时,结果才是True 做取值运算时,取第⼀个为False的值,如果所有的值
都为True,取最后⼀个值。
True and True and False–>结果为False True and True
and True–>结果为True 1 and 0 and 2–>结果是0; 1 and 2
and 3–>结果是3
or
x
or
y
只要有⼀个运算数是True,结果就是True; 只有所有的运算数都为False
时,结果才是False 做取值运算时,取第⼀个为True的值,如果所有的值
都为False,取最后⼀个值。
False or False or True–>结果为True False or False or
False–>结果为False 1 or 0 or 2–>结果是1; 0 or None or ()
or ‘’ or {} -->结果是{}
not not
x
布尔"⾮" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回
True。
not(a and b) 返回 False
注意:
⽐较运算符中 会把布尔值转为数字进⾏⽐较 a == True 改为 2 == 1 所以不等于为False 逻辑运算符 会把数值转为布尔值 True默认为1 False为0 所有不为0的数值都为True(包括负数)逻辑短路问题
a =34
a >10and print('hello world')
a <10and print('hello world')
a >10or print('你好世界')
a <10or print('你好世界')
'''输出结果为 hello world (第⼀排的hello world)
你好世界 (第⼆排的你好世界)
and逻辑运算符判断为两个都为True即输出hello world 第⼆排为False所以输出第⼀个
or逻辑运算符判断为只要其中⼀个对了就为True
所以在判断 a>10为True的时候即默认为True 后⾯的print没有判断
⽽第⼆排的a<10为False 然后判断后⾯的print 所以输出了'你好世界'
'''
补充:位运算符(这⾥我⾃⼰也没那么明⽩参考⽼师的做了表格)按位运算符是把数字看作是⼆进制来进⾏计算的。 下表中变量 a 为 60,b 为 13,⼆进制格式如下:
a =00111100# 60的⼆进制
b =00001101# 13的⼆进制
-----------------
a&b =00001100
a|b =00111101
a^b =00110001
~a =11000011
位
运
算
描述⽰例
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为
(a & b) 输出结果 12 ,⼆进制解释: 0000 1100
|按位或运算符:只要对应的⼆个⼆进位有⼀个为1时,结果位就为1。(a | b) 输出结果 61 ,⼆进制解释: 0011 1101 ^按位异或运算符:当两对应的⼆进位相异时,结果为1 a ^ b) 输出结果 49 ,⼆进制解释: 0011 0001
~按位取反运算符:对数据的每个⼆进制位取反,即把1变为0,把0变为1 。~x 类似于
-x-1
(~a ) 输出结果 -61 ,⼆进制解释: 1100 0011,在⼀个有符
号⼆进制数的补码形式。
<<;左移动运算符:运算数的各⼆进位全部左移若⼲位,由 << 右边的数字指定了移动
的位数,⾼位丢弃,低位补0。
a << 2 输出结果 240 ,⼆进制解释: 1111 0000
>>右移动运算符:把">>"左边的运算数的各⼆进位全部右移若⼲位,>> 右边的数字
指定了移动的位数
a >> 2 输出结果 15 ,⼆进制解释: 0000 1111
运算符优先级
当多种运算符做混合运算时,就会涉及到先运算哪个,后运算哪个问题。以下表格列出了从最⾼到最低优先级的所有运算符:运算符描述
**指数 (最⾼优先级)
~ + -按位翻转, ⼀元加号和减号 (最后两个的⽅法名为 +@ 和 -@)
* / % //乘,除,取模和取整除
+ -加法减法
>> <<;右移,左移运算符
&位 ‘AND’
^ |位运算符
运算符描述
<= < > >=⽐较运算符
<> == !=等于运算符= %= /= //= -= += *= **=赋值运算符
is is not⾝份运算符
in not in成员运算符
not>and>or逻辑运算符
ps:
在以后的实际开发中,如果有多种运算符进⾏混合运算时,强烈建议使⽤⼩括号来⼿动的控制运算符的优先级!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论