运算符
我们编写的代码中,最多是的就是运算,比如“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支持的比较运算符如下表所示,返回结果为 True
或 False
,通常用于条件判断,实现代码分支执行。
运 算符 | 说明 |
---|---|
> | 大于: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
最后,运算符的优先级基本和我们日常习惯相符,比如乘法运算优先级高于加法运算优先级,对于不确定的情况,我们可以使用括号“( )”来调整优先级。