Python运算符
python运算符主要包括算术运算符、赋值运算符、比较(关系)运算符,逻辑运算符和位运算符,使用运算符将不同类型的数据按照一定的规则连接起来的式子称为表达式。
一、算术运算符:
1、算术运算符号是处理四则运算的符号,在数字的处理中用的最多,常用的算术运算符如下:
| 运算符 | 说明 | 实例 | 结果 |
| + | 加 | 12.5+13 | 25.5 |
| – | 减 | 21-6 | 15 |
| * | 乘 | 2*3.3 | 6.6 |
| / | 除 | 6/3 | 2 |
| % | 求余(返回除法的余数) | 7%2 | 1 |
| // | 取整除 | 7//2 | 3 |
| ** | 幂(返回x的y次方) | 2**4 | 16 |
注意:在使用”%”求余的时候,如果除数(第二个数) 是负数,那么取得的结果也是负数
例如:下面的例子展示了算术运算符的使用,在IDLE中新建test文件,输入代码如图:

编写完成后按f5,运行IDLE编辑器,得到结果如下:

2、算术运算符也可以对变量进行运算,如图:

按f5运行后的结果如下:

3、python中的算术运算符优先级如下:
- 第一级:**
- 第二级:*,/,%,//
- 第三级:+,-
同样遵循先乘除后加减,同级运算符从左到右计算,可以使用小括号()调整计算的优先级
4、在python中,运算符” * ” 还可以用于字符串中,计算结果就是字符串重复指定次数的结果,例如:

代码执行的结果如下:

注意:在使用除法(/和//)运算符和求余运算符的时候,除数不能为0,否则将会抛出异常
基本运算符优先级如下:

二、位运算符:
位运算符是把数字看做二进制数来进行计算的,因此,需要先将执行运算的数据转换为二进制然后才能执行运算,Python中的位运算符有位与(&)、位或(|)、位异或(^)、取反(~)、左移位(<<)、右移位(>>)
1、”位与” 运算
运算符号为”&”,运算法则是:两个操作数的二进制表示,只有对应位置都是1,结果才是1,否则为0,如果两个操作数的精度不同,那么结果的精度与精度高的操作数相同,如图:

代码执行的结果如下:

上述操作的内部二进制实现过程如下:

从上图中可以看出,只有对应位置都是1的时候,结果位才是,否则为0
2、”位或” 运算
“位或” 运算符为”|” ,运算法则是:两个操作数的二进制表示,只有对应位置都是0,结果才是0,否则位置1,如果两个操作数的精度不同,则结果的精度与精度高的数相同,如图:

代码执行结果如下:

从上图中可以看出,对应位置只要出现一个1,结果即为1,只有都是0,结果才是0
3、”位异或” 运算
“位异或” 运算的运算符是” ^ ” ,运算法则是:当两个操作数的二进制表示相同(同为0或者同为1) 时,结果为0,否则为1。如果两个数的精度不同,则结果的精度与精度高的操作数相同,如图:

代码执行结果如下:

从上图中可以看出,只要对应位置都是0或者1的时候,结果才为0,否则为1
4、”位取反” 运算
“位取反” 运算也称为”位非”运算,运算符为”~” ,运算法则就是将操作数中对应的二进制数1修改为0,0修改为1,如图:

代码运行结果如下:

从上面的结果可以看出,4的位取反结果为-5,那么为什么会是-5呢,原理如下:
位取反运算需要将数字转换成二进制,然后在进行运算,二进制在内存中是以补码方式存储,补码属于计算机三种机械数的一种,机械数分为原码、反码、补码
如果是正数:原码=反码=补码,正数的符号位为0(0 1001 最前面的0表示符号位)
如果是负数:反码就是将原码的每一位取反(符号位不动),即0变成1,1变成0,补码就是在反码的基础上末位+1,负数的符号位为1
流程如下:
- 首先将十进制数字4转换为二进制,转换后的值为100,如果用四位来表示就是0100,其中最前面的0表示符号位,正数为0,负数为1
- 由于二进制在内存中是以补码的形式存在,因此需要先将此二进制转换为补码,要转成补码先将原码转成反码,再将反码转成补码,正数的二进制原码反码和补码都是一样的,因此都是0100
- 将上面的得到的补码,按位取反,即为所有位置0变成1,1变成0,得到的结果为1011(取反后的原码)
- 将此原码转换为反码,即保持符号位不变,其余的0变成1,1变成0 ,得到结果为1100
- 最后将按照负数的转码规则,将此反码转换位补码,在反码的末位+1得到补码,得到结果为1101(内部为二进制加法1100+0001)
- 将上面转换得到的补码1101转为10进制就是-5(最前面的1为符号位表示负数,后面的101转为十进制为5)
5、左移位运算符:
左移位运算符用符号”<<“表示,运算法则是将一个二进制操作数向左移动指定的位数,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补齐,左移位运算相当于乘以2的n次幂,如图:

代码执行的结果如下:

从上图中可看出,左移位相当于初始值*2的n次幂,右移位相当于初始值除以2的n次幂
位运算符图谱:

运算符的优先级:

三、赋值运算符:
赋值运算符主要用来给变量赋值,使用时,可以直接将基本赋值运算符”=”右边的值赋给左边的变量,也可以进行某些运算后再赋值给昨天的变量,python中常用的赋值运算符如下:
| 运算符 | 说明 | 例子 | 展开形式 |
| = | 简单的赋值运算 | x=y | x=y |
| += | 加赋值 | x+=y | x=x+y |
| -= | 减赋值 | x-=y | x=x-y |
| *= | 乘赋值 | x*=y | x=x*y |
| /= | 除赋值 | x/=y | x=x/y |
| %= | 取余数赋值 | x%=y | x=x%y |
| **= | 幂赋值 | x**=y | x=x**y |
| //= | 取整数赋值 | x//=y | x=x//y |
注意:”=” 和”==” 是编程中常见的错误,其中”=” 表示赋值运算符,”==” 表示比较运算符


四、比较运算符:
比较运算符,也称为关系运算符,用于对变量或者表达式的结果进行大小、真假等比较,如果比较结果为真,返回True,如果返回结果为假,返回False,比较运算符通常用在条件语句中作为判断的依据,常用的比较运算符如下:
| 运算符 | 作用 | 举例 | 结果 |
| > | 大于 | “a” > “b” | False |
| < | 小于 | 130 < 100 | True |
| == | 等于 | “c” == “c” | True |
| != | 不等于 | “a” != “b” | True |
| >= | 大于或等于 | 400 >= 200 | True |
| <= | 小于或等于 | 300 <= 100 | False |
注意:在python中,当需要判断一个变量是否介于两个值之间的时候,可以采用链式比较 “值1” < 变量 < “值2” 的形式,如:100 < a <200
下面的例子说明比较运算符的用法,如图:

代码执行结果如下:

五、逻辑运算符:
逻辑运算符是对真和假两种布尔值进行运算,运算后的结果仍是一个布尔值,python中的逻辑运算符主要包括and(逻辑与)、or(逻辑或)、not(逻辑非)
下表说明了逻辑运算符的用法和说明,如下:
| 运算符 | 含义 | 用法 | 方向 |
| and | 逻辑与 | a and b | 从左到右 |
| or | 逻辑或 | a or b | 从左到右 |
| not | 逻辑非 | not a | 从右到左 |
逻辑运算的结果如下:
| 表达式1 | 表达式2 | 表达式1 and 表达式2 | 表达式1 or 表达式2 | not 表达式1 |
| True | True | True | True | False |
| True | False | False | True | False |
| False | False | False | False | True |
| False | True | False | True | True |
下面例子展示了如何使用逻辑运算符,如下:

上图中,首先定义了星期和时间都是通过键盘输入的方式,然后通过if语句进行判断,当星期等于星期一并且时间在10点到17点或者星期二时间在13点到17点之间表示活动进行中,否则活动结束,注意if语句最后的换行符号”\”
代码执行结果如下:



