Python 基础(七):常用运算符

在这里插入图片描述

❤️ 博客主页:水滴技术
? 订阅专栏:Python 入门核心技术
? 支持水滴:点赞? + 收藏⭐ + 留言?


大家好,我是水滴~~

本篇主要讲术 Python 的常用运算符,主要包括:算术运算符、按位运算符、赋值运算符、比较运算符、身份运算符、逻辑运算符、成员运算符,以及运算符的优先级。

一、算术运算符

算术运算符用于基本的数学运算。运算的双方为数字类型,其结果也为数字类型。

运算符描述示例
+2 + 4 输出结果 6
-4 - 3 输出结果 1
*3 * 4 输出结果 12
/12 / 3 输出结果 4.0
%取模13 % 5 输出结果 3
**2 ** 10 输出结果 1024
//整除7 // 3 输出结果 2

代码示例:

print(2 + 4)   # 加法运算
print(4 - 3)   # 减法运算
print(3 * 4)   # 乘法运算
print(12 / 3)  # 除法运算
print(13 % 5)  # 取模运算
print(2 ** 10) # 幂运算
print(7 // 3)  # 整除运算

输出结果:

6
1
12
4.0
3
1024
2

二、按位运算符

按位运算符用于将整数转换为二进制形式,然后从底位到高位依次按位运算。运算的双方必须为整数,其结果也为整数。

运算符描述示例
&按位与12 & 10 输出结果 8
1100 & 1010 = 1000
|按位或12 | 10 输出结果 14
1100 | 1010 = 1110
^按位异或12 ^ 10 输出结果 6
1100 ^ 1010 = 0110
~按位取反~12 输出结果 -13
见下面详细介绍
<<按位左移12 << 2 输出结果 48
1100 << 2 = 110000
>>按位右移12 >> 2 输出结果 3
1100 >> 2 = 11

按位运算符相对复杂些,需要详细的介绍。

2.1 按位与 &

两个整数转为二进制数后,按顺序从低到高匹配:只有都为1时,结果才为1;有一个 0,结果为0。

例如:

1100 & 1010 = 1000

2.2 按位或 |

两个整数转为二进制数后,按顺序从低到高匹配:只要有一个为1时,结果就为1;两个都为 0 时,结果才为 0。

例如:

1100 | 1010 = 1110

2.3 按位异或 ^

两个整数转为二进制数后,按顺序从低到高匹配:两个数相同时为 0;不同时为 1。

例如:

1100 ^ 1010 = 0110

2.4 按位取反 ~

按位取反就是先将十进制数转为二进制数,然后将每一个的 0 转为 1,1 转为 0,在转换之前需要先确定位数。

2.4.1 正整数取反

比如对 12 进行取反的过程:

(1)先确定我们计算的位数,这里我使用八位,即一个字节

(2)那么 12 的二进制表示为:00001100

(3)对该二进制取反,结果为:11110011

(4)最后将该结果转为十进制,得到:-13

2.4.2 负整数取反

比如对 -15 进行取返的过程:

(1)先确定我们计算的位数,这里我使用八位,即一个字节

(2)那么 -15 的二进制表示为:11110001

(3)对该十进制取反,结果为:00001110

(4)最后将该结果转为十进制,得到:14

2.4.3 二进制与十进制之间的转换

在上面介绍取反的过程时,对于二进制与十进制之间的转换没做介绍,这里详细说一下。

首先在做转换之前,要先确定位数,为什么要这样?

因为二进制中,最高位是用来表示正负号的,0代表正数,1代表负数。所以要先确定位数,才能找到最高位。
比如:一个字节是八数,最高位表示正负号,剩余七位才能用来表示数字,所以一个字节最大的正数为 01111111,转为十进制为 127;最小的负为 10000000,转为十进制为 -128

下面开始介绍十进制与十进制之间的转换,对于正数比较简单,不多废话,我们重点说下负数:

负数十进制转二进制:

简述过程:忽略负号的十进制 → 原码 → 反码 → 补码。
详细过程:先忽略负号,取正数的二进制,得到原码;然后对其取反,得到反码;最后加一,得到补码。这个最终的补码,就是我们要的二进制。

下面是将 -14 转为二进制的过程:

(1)忽略负号,取 14 的二进制 00001110,这是原码

(2)对原码取反 11110001,这是反码

(3)再加一 11110010,这是补码,也是我们最终需要的二进制数。

负数二进制转十进制:

简述过程:补码 → 反码 → 原码 → 十进制加上负号。
详细过程:拿到负数的二进制,这个是补码;先加一,得到反码;然后取反,得到原码;最后转为十进制,再加上负号,就是我们要的十进制。

下面是将 11110010 转为十进制的过程:

(1)先将补码 11110010 减一,得到 11110001,这是反码

(2)对反码取反,得到 00001110,这是原码

(3)将原码转为十进制为14,再加上负号为 -14

2.5 按位左移 <<

两个整数转为二进制数后,按顺序从低到高匹配:向左移 n 位,后面补 n 个 0。

例如:

1100 << 2 = 110000

2.6 按位右移 >>

两个整数转为二进制数后,按顺序从低到高匹配:向右移 n 位,舍弃右边 n 位数据。

例如:

1100 >> 2 = 11

三、赋值运算符

Python 支持算术运算符、按位运算符、赋值运算符联合使用,形成复合赋值运算符。等价于先执行算术运算或按位运算,然后将结果进行赋值。

运算符描述示例等同于
=赋值n = 2n = 2
+=加法赋值n += 2n = n + 2
-=减法赋值n -= 2n = n - 2
*=乘法赋值n *= 2n = n * 2
/=除法赋值n /= 2n = n / 2
%=取模赋值n %= 2n = n % 2
**=幂赋值n **= 2n = n ** 2
//=整除赋值n //= 2n = n // 2
&=按位与赋值n &= 2n = n & 2
|=按位或赋值n |= 2n = n
^=按位异或赋值n ^= 2n = n ^ 2
<<=按位左移赋值n <<= 2n = n << 2
>>=按位右移赋值n >>= 2n = n >> 2

四、比较运算符

比较运算符用于比较两个数之间的大小关系,执行结果为布尔类型:正确返回 True,不正确返回 False。

运算符描述示例
<小于3 < 4 输出结果 True
4 < 3 输出结果 False
<=小于等于4 <= 4 输出结果 True
5 <= 4 输出结果 False
>大于5 > 3 输出结果 True
5 > 5 输出结果 False
>=大于等于5 >= 5 输出结果 True
5 >= 6 输出结果 False
==等于5 == 5 输出结果 True
5 == 6 输出结果 False
!=不等于5 != 6 输出结果 True
5 != 5 输出结果 False

五、身份运算符

身份运算符用于比较对象,不是比较它们的值是否相等,而是比较引用地址是否相同。

运算符描述示例
is是否同一对象a is b 输出结果 False
is not是否不同对象a is not b 输出结果 True

六、逻辑运算符

逻辑运算符用于判断两边的逻辑关系。

运算符描述示例
and与 - 两边都为 True 时,结果才为 True3 > 1 and 4 > 1 输出结果 True
or或 - 两边有一个为 True 时,结果就为 True3 > 1 or 4 < 1 输出结果 True
not非 - 结果与括号内值相反not(3 > 1) 输出结果 False

七、成员运算符

成员运算符用于判断值是否属于指定序列。

运算符描述示例
in值是序列的成员a in list 输出结果 True
not in值不是序列的成员a not in list 输出结果 False

八、运算符的优先级

Python 中各类运算符的优先级如下表所示:优先级依次从高到低

运算符优先级排序运算符内部优先次序
算数运算符遵循四则运算规则
比较运算符(>,>=,<,<=)>,>=,<,<=从左至右依次运算
比较运算符(==,!=)==,!=从左至右依次运算
赋值运算符从左至右依次运算
身份运算符从左至右依次运算
成员运算符从左至右依次运算
逻辑运算符(and)and的优先级优于or和not
逻辑运算符(or,not)从左至右依次运算

系列文章

? Python 基础(一):初识 Python
? Python 基础(二):搭建 Python 开发环境
? Python 基础(三):Python 集成开发工具 IDLE
? Python 基础(四):基础语法
? Python 基础(五):变量与常量
? Python 基础(六):基本数据类型

热门专栏

? 《Python入门核心技术
? 《IDEA 教程:从入门到精通
? 《Java 教程:从入门到精通
? 《MySQL 教程:从入门到精通
? 《大数据核心技术从入门到精通

在这里插入图片描述


版权声明:本文为weixin_67276852原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。