Skip to main content

运算符

我们编写的代码中,最多是的就是运算,比如“100+200”,“100”和“200”是操作数,“+”是运算符。Python中的运算符,除了加减乘除,还有众多其它类型的运算符。

算术运算符

Python支持的算术运算符如下表所示,是编程中最多使用的运算符。

运算符说明
+加:两个操作数相加
-减:两个操作数相减或得到一个负数
*乘:两个操作数相乘或让一个字符串重复若干次
/除:两个操作数相除
**乘方:两个操作数乘方
//整除:两个操作数相除,向下取整数部分
%模除:两个操作数相除,得到余数

算数运算符示例如下代码段所示:

# 算术运算符示例(exp4.py)

# 加法
a=100+200
print("100 + 200 =", a)

# 减法
a=100-200
b=-10
print("100 - 200 =", a)
print("b =", b)

# 乘法
a=4*5
print("4 * 5 =", a)
print("test "*4)

# 除法
a=4/5
print("4 / 5 =", a)

# 乘方
a=2**4
print("2 ** 4 =", a)

# 整除
a=13//5
print("13 // 5 =", a)

# 模除
a=13%5
print("13 % 5 =", a)

执行结果如下:

100 + 200 = 300
100 - 200 = -100
b = -10
4 * 5 = 20
test test test test
4 / 5 = 0.8
2 ** 4 = 16
13 // 5 = 2
13 % 5 = 3

有时候,"a=a+b",也被写作 "a+=b" ,这是一种简写方式,即 变量 = 变量 运算 表达式 简写成 变量 运算 = 表达式。同理其它算术运算符,也能这样简写,比如 "a=ab" ,简写为 "a=b"。

比较运算符

Python支持的比较运算符如下表所示,返回结果为 TrueFalse ,通常用于条件判断,实现代码分支执行。

运算符说明
>大于:x是否大于y
<>小于:x是否小于y
>=大于等于:x是否大于或等于y
<=小于等于:x是否小于或等于y
==等于:比较两个对象是否相等
!=不等于:比较两个对象是否不相等

比较运算符示例如下代码段所示:

# 比较运算符示例(exp5.py)

# 大于>
a=200>100
print("200>100 is:", a)

# 小于>
a=200<100
print("200<100 is:", a)

# 大于等于>=
a=200>=100
print("200>=100 is:", a)

# 小于等于<=
a=200<=100
print("200<=100 is:", a)

# 等于==
a=200==100
print("200==100 is:", a)

# 不等于!=
a=200!=100
print("200!=100 is:", a)

# 应用
a=200
b=100
if a>b:
print("a>b")
else:
print("a<b")

执行结果如下:

200>100 is: True
200<100 is: False
200>=100 is: True
200<=100 is: False
200==100 is: False
200!=100 is: True
a>b

位运算符

Python支持的位运算符如下表所示。位运算大家可能比较陌生,但有过单片机开发的同学,对此应该不会陌生。由于是通过修改寄存器,从而实现对单片机外设的控制,而对寄存器的某一位操作,则称之为位操作。在进行位运算时,要把计算的数字看作二进制,这样才好理解位运算。

运算符说明
&按位与:当两个数,对应位都为1,该位就为1,否则为0
^按位异或:当两个数,对应位只要相异(不同),该位就为1,否则为0
~按位取反:把这个数的每一位,1变0,0变1
<<左移:把这个数的每一位,全部左移若干位,高位丢弃,低位补0
>>右移:把这个数的每一位,全部右移若干位,低位丢弃,高位补0等

位运算符示例如下代码段所示。

# 位运算符示例(exp6.py)

a=45 # 二进制为0010 1101
b=25 # 二进制为0001 1001
print("a =" ,a, "b =", b)

# 按位与&
c=a&b # 二进制对应位,都为1,结果为1,否则为0,结果为:0000 1001,即为9
print("a&b =", c)

# 按位或|
c=a|b # 二进制对应位,只要有1个为1,结果为1,否则为0,结果为:0011 1101,即为61
print("a|b =", c)

# 按位异或^
c=a^b # 二进制对应位,只要相异(不同),结果为1,否则为0,结果为:0011 0100,即为52
print("a^b =", c)

# 按位取反~
c=~a # 把这个数二进制的每一位,1变0,0变1,结果为:1101 0010(此时最高位是符号位),即为-46
print("~a =", c)

# 左移<<
c=a<<2 # 把这个数二进制的每一位,全部左移2位,高位丢弃,低位补0,结果为:1011 0100,即为180
print("a<<2 =", c)

# 右移>>
c=a>>2 # 把这个数二进制的每一位,全部右移2位,低位丢弃,高位补0,结果为:0000 1011,即为11
print("a>>2 =", c)

执行结果如下:

a = 45 b = 25
a&b = 9
a|b = 61
a^b = 52
~a = -46
a<<2 = 180
a>>2 = 11

逻辑运算符

Python支持的逻辑运算符如下表所示。需要注意的是,逻辑运算存在 短路计算 ,一旦前者满足条件,就不会管后续的判断。

运算符说明
and布尔:x and y,如果x为False,返回False,否则返回y
or布尔:x or y,如果x为Ture,返回True,否则返回y
not布尔:not x,如果x为True,返回False,如果x为False,它返回True

逻辑运算符示例如下代码段所示:

# 逻辑运算符示例(exp7.py)

x=10
y=20

# 与and
print("x =" ,x, "y =", y)
z = x and y
print("x and y =", z)

x=False
print("x =" ,x, "y =", y)
z = x and y
print("x and y =", z)

print("----------------")

# 或or
x=10
print("x =" ,x, "y =", y)
z = x or y
print("x or y =", z)

x=False
print("x =" ,x, "y =", y)
z = x or y
print("x or y =", z)

print("----------------")

# 非not
x=10
y=20
print("x =" ,x, "y =", y)
z = not x
print("not x =", z)

执行结果如下:

x = 10 y = 20
x and y = 20
x = False y = 20
x and y = False
----------------
x = 10 y = 20
x or y = 10
x = False y = 20
x or y = 20
----------------
x = 10 y = 20
not x = False

最后,运算符的优先级基本和我们日常习惯相符,比如乘法运算优先级高于加法运算优先级,对于不确定的情况,我们可以使用括号“( )”来调整优先级。