Python教程(13)——Python运算符详解|算术运算符|比较运算符|逻辑运算符|位
Python的运算符是用于执行各种操作的符号或符号组合。它们用于操作数据并进行算术、比较、逻辑和其他类型的运算。我们所熟知的加减乘除也是运算符中的一种。Python提供了多种类型的运算符,有算术运算符,比较运算符,赋值运算符,逻辑运算符,位算符等等。算术运算符
算术运算符是Python中比较简单的运算符,我们小学所学习的加减乘除也是算术运算符中的一部分,用于执行数学运算,具体有以下算术运算符。
1、 加法运算符(+):将两个操作数相加。
a = 10
b = 5
c = a + b
print(c) # 输出:152、 减法运算符(-):从第一个操作数中减去第二个操作数。
a = 10
b = 5
c = a - b
print(c) # 输出:53、 乘法运算符(*):将两个操作数相乘。
a = 10
b = 5
c = a * b
print(c) # 输出:504、 除法运算符(/):将第一个操作数除以第二个操作数,结果为浮点数。
a = 10
b = 5
c = a / b
print(c) # 输出:2.05、 取余运算符(%):返回第一个操作数除以第二个操作数的余数。
a = 10
b = 3
c = a % b
print(c) # 输出:16、 幂运算符(**):将第一个操作数作为底数,第二个操作数作为指数进行幂运算。
a = 2
b = 3
c = a ** b
print(c) # 输出:87、 整除运算符(//):将第一个操作数除以第二个操作数并向下取整。
a = 10
b = 3
c = a // b
print(c) # 输出:3算术运算符总的来说还是比较简单的,但是有些情况还是需要注意。比如有些浮点数相加,结果并不一定是你认为的结果,像
0.1+0.2结果就是0.30000000000000004,
0.1*0.2结果就是0.020000000000000004,
0.3-0.2结果就是0.09999999999999998,
很违反直觉,但是确实是这样的,这个涉及到计算机用二进制表示小数的精度问题。
还有就是浮点数和整数进行算术运算符,结果应该也是浮点数。
比较运算符
Python的比较运算符用于比较两个值之间的关系,返回布尔值(True或False),我们小学所学的大于小于就是比较运算符,具体有以下比较运算符。
1、 等于运算符(==):用于检查两个操作数是否相等。
2、 不等于运算符(!=):用于检查两个操作数是否不相等。
3、 大于运算符(>):用于检查第一个操作数是否大于第二个操作数。
4、 小于运算符(=):用于检查第一个操作数是否大于或等于第二个操作数。
6、 小于等于运算符( b) # 输出:Trueprint(a < b) # 输出:Trueprint(a >= b) # 输出:Falseprint(a5)print(z) # 输出:Truew = (x > 10 and y > 5)print(w) # False2、 逻辑或运算符(or):当有一个操作数为True时,那么结果为True;只有所有的操作数为False,那么结果为False。
a = 5
b = 10
print(a == b) # 输出:False
print(a != b) # 输出:True
print(a > b) # 输出:True
print(a < b) # 输出:True
print(a >= b) # 输出:False
print(a <= b) # 输出:True3、 逻辑非运算符(not):当操作数为True时,结果为False;当操作数为False时,结果为True。
a = 10
a %= 3
print(a) # 输出:1
b = 2
b *= 3
print(b) # 输出:6逻辑运算本质
逻辑运算符返回的结果一般都是布尔值,但并不是说绝对都是返回布尔值的。比如以下情况就不输出True或者False了。
x = 5
y = 10
z = (x < 10 and y > 5)
print(z) # 输出:True
w = (x > 10 and y > 5)
print(w) # False在Pyhon当中,任何非0或非空对象都被视为True,像大于0或者小于0的数,都是被视为True。而整数0,浮点数0,空字符串,空列表,空元组等等,都被视为False。但同时需要明白,这个并不是说2 == True的结果就是为True。在布尔值中,True是1,False是0。
另外需要注意的是,逻运算符是短路运算符,即在计算表达式期间,如果已经确定结果,就不再计算剩下表达式。
例如,在使用与运算符(and)时,第一个操作数为False,那么第二个操作数将不会被计算,因为无论第二个操作数是什么,都不会影响最后的结果了,并且输出第一个操作数的值。如果第一个操作数是True,那么就会继续计算第二个操作数的值,并把第二个操作数的值作为结果输出。
同样地,使用或算符(or)时,如果第一个操作数为True,那第二个操作数将不会被计算,因为无论第二个操作数是什么,都不会影响最后的结果了,并且输出第一个操作数的值。如果第一个操作数是False,那么就会继续计算第二个操作数的值,并把第二个操作数的值作为结果输出。
大家可以结合一下上面的结论和例子来理解,并且自己可以动手实践起来。
位运算符
位运算符在数学中并不常见,所以可能很多初学编程的朋友不大理解。位运算符用于对整数进行位级操作,也就是将一个整数转化成二进制数,然后两个二进制数进行的各种操作,位运算符一般常见与底层操作相关的。
1、 按位与(&):对两个操作数的每个位执行与操作,如果两个对应的位都是1,则结果为1,有任何一个方为0,结果就为0。和逻辑与运算有点像。
x = 5
y = 10
z = (x < 10 or y < 5)
print(z) # 输出:True
w = (x > 10 or y < 5)
print(w) # False在上述示例中,按位与运算符(&)对变量 a 和 b 进行位运算。结果是将 a 和 b 的对应位进行与操作,得到的二进制数为 0001,转换成十进制为 1。
2、 按位或(|):对两个操作数的每个位执行或操作,如果两个对应的位有一个1,则结果为1,只有两个对应的位为0,结果才为0。和逻辑或运算有点像。
x = 5
y = 10
z = not(x < 10 and y > 5)
print(z) # 输出:False在上述示例中,按位或运算符(|)对变量 a 和 b 进行位运算。结果是将 a 和 b 的对应位进行或操作,得到的二进制数为 0111,转换成十进制为 7。
3、 按位异或(^):对两个操作数的每个位执行异或操作,如果两个对应的位不相同,则结果为1,否则为0。也就是两个对应的位都是1或者都是0,那么结果为0,只要不相同,就是1。
x = 5
y = 10
z = (x and y)
print(z) # 输出:10
w = (x or y)
print(w) # 输出:5在上述示例中,按位异或运算符(^)对变量 a 和 b 进行位运算。结果是将 a 和 b 的对应位进行异或操作,得到的二进制数为 0110,转换成十进制为 6。
4、 按位取反(~):对操作数的每个位执行取反操作,将1变为0,将0变为1。
a = 5 # 二进制表示为 0101
b = 3 # 二进制表示为 0011
result = a & b # 二进制表示为 0001
print(result)# 输出:1这里需要注意的是,我们在之前按位与或者按位或中,是为了书写方便,实际上5和3在32位机器上的内存里的表示是这样的。
a = 5 # 二进制表示为 0101
b = 3 # 二进制表示为 0011
result = a | b # 二进制表示为 0111
print(result)# 输出:7因为上面的计算中,并不需要前面那么多位,所以我们就只写后面几个,但是按位取反就需要完整的表示出来,对5按位取反就是下面这个
a = 5 # 二进制表示为 0101
b = 3 # 二进制表示为 0011
result = a ^ b
print(result)# 输出:6这个在内存当中是个 -6,至于为什么,大家也不用管,有兴趣的可以去查找相关资料来了解,负数的补码表示方式,本文就不讨论这个问题。
5、 按位左移(>)将变量a的所有位向右移动1位。结果是将a的二进制数 0101 右移1位,得到的二进制数为 0010,转换成十进制为 2。
这些位运算符可以用于对整数进行位级操作。通过使用这些运算符,你可以在位级上处理二进制数据,提取或操作其中的位,满足特定需求。请注意,位运算符仅适用于整数类型。
更多精彩内容,请关注同名公众:一点sir(alittle-sir)
来源:https://www.cnblogs.com/kiwiblog/p/17691075.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页:
[1]