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

news2024/11/14 15:05:57

在这里插入图片描述

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

文章目录

  • 一、算术运算符
  • 二、按位运算符
    • 2.1 按位与 &
    • 2.2 按位或 |
    • 2.3 按位异或 ^
    • 2.4 按位取反 ~
      • 2.4.1 正整数取反
      • 2.4.2 负整数取反
      • 2.4.3 二进制与十进制之间的转换
    • 2.5 按位左移 <<
    • 2.6 按位右移 >>
  • 三、赋值运算符
  • 四、比较运算符
  • 五、身份运算符
  • 六、逻辑运算符
  • 七、成员运算符
  • 八、运算符的优先级
  • 系列文章
  • 热门专栏


大家好,我是水滴~~

本篇主要讲术 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 教程:从入门到精通》
👍 《大数据核心技术从入门到精通》

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/432008.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Three.js教程:顶点颜色数据插值计算

推荐&#xff1a;将 NSDT场景编辑器 加入你3D工具链 其他工具系列&#xff1a; NSDT简石数字孪生 顶点颜色数据插值计算 上节课自定义几何体给大家介绍了一个顶点位置坐标概念&#xff0c;本节课给大家介绍一个新的几何体顶点概念&#xff0c;就是几何体顶点颜色。 通常几何体…

python学习笔记(二)IF、FOR、WHILE、break、continue、函数定义与调用、面向对象

笔记二 流程控制if条件语句for循环语句while循环语句break 和continue python 函数定义与调用函数与调用函数的脚本分离脚本模板函数参数匿名参数变量作用域全局变量与局部变量 python面向对象类的创建实例的创建属性、方法的访问属性的添加、删除和修改属性的访问python内置类…

( “树” 之 前中后序遍历 ) 144. 二叉树的前序遍历 ——【Leetcode每日一题】

基础概念&#xff1a;前中后序遍历 1/ \2 3/ \ \ 4 5 6层次遍历顺序&#xff1a;[1 2 3 4 5 6]前序遍历顺序&#xff1a;[1 2 4 5 3 6]中序遍历顺序&#xff1a;[4 2 5 1 3 6]后序遍历顺序&#xff1a;[4 5 2 6 3 1] 层次遍历使用 BFS 实现&#xff0c;利用的就是 BFS…

写不了博客了吗?

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

像素的奇妙冒险:使用 Python 玩转彩色图片的灰度处理

文章目录 参考描述模块PillowPILPillow获取 Numpy获取 使用 Pillow 实现图片的灰度处理ImageOps.grayscale()convert() 原理灰度模式与彩色模式图片表示与三维数组ImageOps.grayscale() 与 convert(L) 背后的逻辑心理学灰度加权公式 Python 实现灰度模式下的灰度图片彩色模式下…

基于遥感的自然生态环境检测——实验三:生态因子提取

实验三&#xff1a;生态因子提取 一、实验目标 生态因子生成&#xff1b;生态因子归一化&#xff1b;生态环境评价 二、实验内容 根据经过大气校正后的影像生产土地覆盖指数、土壤指数以及坡度等&#xff0c;对土地覆盖指数、土壤指数以及坡度进行密度分割归一化&#xff1…

scikit-learn

一段时间只做一个事情。 比如不要想同时学习flink和scikit-learn。这实在是太难了。 pandas numpy pip install scikit-learn 使用的是venv环境 太难了。。 https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-mode…

建立人力资源运营团队的五个步骤

作为小企业主&#xff0c;设置人力资源运营可能不是您的首要任务。但是&#xff0c;随着您扩大运营规模和员工人数&#xff0c;您可能会遇到合规性和员工敬业度问题&#xff0c;从而阻碍您的业务增长。组建一个团队来照顾您的人力资源运营和员工可以让您专注于改进您的产品和满…

AI独立开发者:一周涨粉8万赚2W美元;推特#HustleGPT GPT-4创业挑战;即刻#AIHackathon创业者在行动 | ShowMeAI周刊

&#x1f440;日报&周刊合辑 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; 这是ShowMeAI周刊的第7期。聚焦AI领域本周热点&#xff0c;及其在各圈层泛起的涟漪&#xff1b;拆解AI独立开发者的盈利案例&#xff0c;关注中美AIG…

Javaee Spring JdbcTemplate基本使用 基于xml配置方式

目录 哈哈哈哈&#xff0c;说好是要写一篇关于jdbcTemplate的基本使用&#xff0c;貌似说跑题了&#xff0c;但是主体还是用jdbctemplate实现的&#xff0c;有耐心看完的话相信能有点点收获的哦&#xff01; 项目结构&#xff1a; 小结&#xff1a; 遇到了个小问题&#xff0…

面试题——Arrays.asList()得到的List可以修改吗?

概述 前几天面试问的关于Arrays.asList()的问题&#xff0c;总结一下常见问题。 Arrays.asList()使用了什么设计模式 答案&#xff1a;使用了适配器模式。适配器模式简单来说就是不修改原对象&#xff0c;为了适应新的需求&#xff0c;适配成另一种接口或者类&#xff0c;我…

常见WebShell客户端的流量特征

以下的全是我在各个大佬哪里看文章做的总结-相当于我的笔记 中国蚁剑(AntSword) 大佬文章地址 https://www.cnblogs.com/NoCirc1e/p/16275608.htmlhttps://www.cnblogs.com/NoCirc1e/p/16275608.html 蚁剑PHP类WebShell链接流量 POST /uploadfiles/shell.php HTTP/1.1 Hos…

Windows安装Dolby Vision 杜比视界插件

前言 使用普通的播放器播放杜比视界视频时会出现发紫和发绿&#xff0c;两者来回切换的情况&#xff0c;要么使用专门的播放器&#xff0c;要么使用Windows自带播放器加上安装相应拓展 在使用Windows自带的“电影和电视”播放杜比视界(Dolby Vision)的视频时&#xff0c;需要安…

iOS 自定义Tab页

在iOS里面可以用UISegmentedControl控件来表示Tab页&#xff0c;但其样式难以修改&#xff0c;我们一般会自定义Tab页。 1. 自定义Tab页 在这里我们首先定义UKTabItemView用来显示其中的标签页。 // 标签页代理 protocol UKTabItemViewDelegate <NSObject>- (void)onT…

Kafka源码分析之Producer数据发送流程(四)

概述 书接上回的producer发送流程&#xff0c;在准备工作完成后&#xff0c;kafka的producer借助Sender和KafkaClient两大组件完成了数据的发送。其底层封装了java的NIO的组件channle以及selector&#xff0c;对于NIO组件不太熟悉的同学可以自行查询相关文档。 下面我整理了k…

从0搭建Vue3组件库(二):Monorepo项目搭建

本篇文章是从0搭建Vue3组件库系列文章第二篇,本篇文章将带领大家使用pnpm搭建一个简单的Monorepo项目,并完成包的关联与测试 什么是 Monorepo 其实很简单,就是一个代码库里包含很多的项目,而这些项目虽然是相关联的,但是在逻辑上是独立的,可以由不同人或者团队来维护 为什么…

Scala之集合(1)

目录 ​​​​​​​集合介绍&#xff1a; 不可变集合继承图&#xff1a;​编辑 可变集合继承图 数组&#xff1a; 不可变数组&#xff1a; 样例代码&#xff1a; 遍历集合的方法&#xff1a; 1.for循环 2.迭代器 3.转换成List列表&#xff1a; 4.使用foreach()函数&a…

WebServer项目(二)->linux网络编程基础知识

WebServer项目->linux网络编程基础知识其中&#xff0c;遇到的错误总结1). read&#xff1a;Connection reset by peer2).什么叫连接被重置&#xff1f;1. socket 介绍2. 字节序从主机字节序到网络字节序的转换函数&#xff1a;htons、htonl&#xff1b; 从网络字节序到主机…

科创人·中建三局一公司尹奎:数字化变革能创造全新行业,其意义超越形式、范式创新

尹奎 中建三局一公司技术中心主任 教授级高级工程师&#xff0c;BIM领域资深专家&#xff0c;完成10余个基于BIM的相关研究课题&#xff0c;获省部级以上科技进步奖 13 项&#xff1b;公开出版专著3部&#xff0c;参与编写“十二五”国家重点图书出版规划项目《BIM应用施工》&a…

CCS5.5环境设置

CCS5.5环境设置 文件编码格式设置利用断点导入*.dat文件先用Python生成*.dat文件DSP代码&#xff08;sys/bios&#xff09; 步骤利用strip6x工具去除**.out文件中的调试信息硬件跟踪功能应用名词解释使用方法 ccs显示图片参数设置 文件编码格式设置 可分别对工作空间、工程、单…