Python教程(13)——Python运算符详解|算术运算符|比较运算符|逻辑运算符|位运算符

news2025/4/8 16:27:31

Python运算符

    • 算术运算符
    • 比较运算符
    • 赋值运算符
    • 逻辑运算符
      • 逻辑运算类型
      • 逻辑运算本质
    • 位运算符

Python的运算符是用于执行各种操作的符号或符号组合。它们用于操作数据并进行算术、比较、逻辑和其他类型的运算。我们所熟知的加减乘除也是运算符中的一种。Python提供了多种类型的运算符,有算术运算符,比较运算符,赋值运算符,逻辑运算符,位算符等等。

在这里插入图片描述

算术运算符

算术运算符是Python中比较简单的运算符,我们小学所学习的加减乘除也是算术运算符中的一部分,用于执行数学运算,具体有以下算术运算符。

1、 加法运算符(+):将两个操作数相加。

a = 10
b = 5
c = a + b
print(c)   # 输出:15

2、 减法运算符(-):从第一个操作数中减去第二个操作数。

a = 10
b = 5
c = a - b
print(c)   # 输出:5

3、 乘法运算符(*):将两个操作数相乘。

a = 10
b = 5
c = a * b
print(c)   # 输出:50

4、 除法运算符(/):将第一个操作数除以第二个操作数,结果为浮点数。

a = 10
b = 5
c = a / b
print(c)   # 输出:2.0

5、 取余运算符(%):返回第一个操作数除以第二个操作数的余数。

a = 10
b = 3
c = a % b
print(c)   # 输出:1

6、 幂运算符(**):将第一个操作数作为底数,第二个操作数作为指数进行幂运算。

a = 2
b = 3
c = a ** b
print(c)   # 输出:8

7、 整除运算符(//):将第一个操作数除以第二个操作数并向下取整。

a = 10
b = 3
c = a // b
print(c)   # 输出:3

算术运算符总的来说还是比较简单的,但是有些情况还是需要注意。比如有些浮点数相加,结果并不一定是你认为的结果,像
0.1+0.2结果就是0.30000000000000004
0.1*0.2结果就是0.020000000000000004
0.3-0.2结果就是0.09999999999999998
很违反直觉,但是确实是这样的,这个涉及到计算机用二进制表示小数的精度问题。
还有就是浮点数和整数进行算术运算符,结果应该也是浮点数。

比较运算符

Python的比较运算符用于比较两个值之间的关系,返回布尔值(True或False),我们小学所学的大于小于就是比较运算符,具体有以下比较运算符。

1、 等于运算符(==):用于检查两个操作数是否相等。
2、 不等于运算符(!=):用于检查两个操作数是否不相等。
3、 大于运算符(>):用于检查第一个操作数是否大于第二个操作数。
4、 小于运算符(<):用于检查第一个操作数是否小于第二个操作数。
5、 大于等于运算符(>=):用于检查第一个操作数是否大于或等于第二个操作数。
6、 小于等于运算符(<=):用于检查第一个操作数是否小于或等于第二个操作数。

a = 5
b = 10
print(a == b)   # 输出:False
print(a != b)   # 输出:True
print(a > b)   # 输出:True
print(a < b)   # 输出:True
print(a >= b)   # 输出:False
print(a <= b)   # 输出:True

赋值运算符

Python的赋值运算符用于将值赋给变量,就是将左边的值赋值给右边,赋值运算符中最重要的符号就是=,然后在结合其他的加减乘除可以扩展出其他的赋值运算符,以下是Python的赋值运算符。

1、 等号运算符(=):将右边的值赋给左边的变量。
2、 加等于运算符(+=):将右边的加到左边的变量上,并将结果赋给左边的变量。
3、 减等于运算符(-=):将右边的值从左边的变量中减去,并将结果赋给左边的变量。
4、 乘等于运算符(*=):将右边的值乘以左边的变量,并将结果赋给左边的变量。
5、 除等于运算符(/=):将左边的变量除以右边的值,并将结果赋给左边的变量。
6、 取模等于运算符(%=):将左边的变量对右边的值取模,并将结果赋给左边的变量。

大家需要注意的是,这里的赋值运算符可能与数学上的运算符有点出入,但是实际上是一样的,这里将加减乘除+-*/写在等号的左边,其实是和常规理解的写法是一样的,比如,a += 3就是 a = a + 3,记住这就是一样的。

a = 10
a %= 3
print(a)   # 输出:1
b = 2
b *= 3
print(b)   # 输出:6

逻辑运算符

编程中逻辑运算与数学中的逻辑运算是一样的,Python的逻辑运算符用于在布尔值之间进行逻辑运算,返回布尔值结果(True或False)。

逻辑运算类型

1、 逻辑与运算符(and):当所有操作数都为True时,结果为True;只要有一方为False,那么结果为False。

x = 5
y = 10
z = (x < 10 and y > 5)
print(z)   # 输出:True
w = (x > 10 and y > 5)
print(w)   # False

2、 逻辑或运算符(or):当有一个操作数为True时,那么结果为True;只有所有的操作数为False,那么结果为False。

x = 5
y = 10
z = (x < 10 or y < 5)
print(z)   # 输出:True
w = (x > 10 or y < 5)
print(w)   # False

3、 逻辑非运算符(not):当操作数为True时,结果为False;当操作数为False时,结果为True。

x = 5
y = 10
z = not(x < 10 and y > 5)
print(z)   # 输出:False

逻辑运算本质

逻辑运算符返回的结果一般都是布尔值,但并不是说绝对都是返回布尔值的。比如以下情况就不输出True或者False了。

x = 5
y = 10
z = (x and y)
print(z)   # 输出:10
w = (x or y)
print(w)   # 输出:5

在Pyhon当中,任何非0或非空对象都被视为True,像大于0或者小于0的数,都是被视为True。而整数0,浮点数0,空字符串,空列表,空元组等等,都被视为False。但同时需要明白,这个并不是说2 == True的结果就是为True。在布尔值中,True是1,False是0。

另外需要注意的是,逻运算符是短路运算符,即在计算表达式期间,如果已经确定结果,就不再计算剩下表达式。

例如,在使用与运算符(and)时,第一个操作数为False,那么第二个操作数将不会被计算,因为无论第二个操作数是什么,都不会影响最后的结果了,并且输出第一个操作数的值。如果第一个操作数是True,那么就会继续计算第二个操作数的值,并把第二个操作数的值作为结果输出。

同样地,使用或算符(or)时,如果第一个操作数为True,那第二个操作数将不会被计算,因为无论第二个操作数是什么,都不会影响最后的结果了,并且输出第一个操作数的值。如果第一个操作数是False,那么就会继续计算第二个操作数的值,并把第二个操作数的值作为结果输出。

大家可以结合一下上面的结论和例子来理解,并且自己可以动手实践起来。

位运算符

位运算符在数学中并不常见,所以可能很多初学编程的朋友不大理解。位运算符用于对整数进行位级操作,也就是将一个整数转化成二进制数,然后两个二进制数进行的各种操作,位运算符一般常见与底层操作相关的。

1、 按位与(&):对两个操作数的每个位执行与操作,如果两个对应的位都是1,则结果为1,有任何一个方为0,结果就为0。和逻辑与运算有点像。

a = 5   # 二进制表示为 0101
b = 3   # 二进制表示为 0011

result = a & b   # 二进制表示为 0001
print(result)  # 输出:1

在上述示例中,按位与运算符(&)对变量 a 和 b 进行位运算。结果是将 a 和 b 的对应位进行与操作,得到的二进制数为 0001,转换成十进制为 1。

2、 按位或(|):对两个操作数的每个位执行或操作,如果两个对应的位有一个1,则结果为1,只有两个对应的位为0,结果才为0。和逻辑或运算有点像。

a = 5   # 二进制表示为 0101
b = 3   # 二进制表示为 0011

result = a | b   # 二进制表示为 0111
print(result)  # 输出:7

在上述示例中,按位或运算符(|)对变量 a 和 b 进行位运算。结果是将 a 和 b 的对应位进行或操作,得到的二进制数为 0111,转换成十进制为 7。

3、 按位异或(^):对两个操作数的每个位执行异或操作,如果两个对应的位不相同,则结果为1,否则为0。也就是两个对应的位都是1或者都是0,那么结果为0,只要不相同,就是1。

a = 5   # 二进制表示为 0101
b = 3   # 二进制表示为 0011

result = a ^ b
print(result)  # 输出:6

在上述示例中,按位异或运算符(^)对变量 a 和 b 进行位运算。结果是将 a 和 b 的对应位进行异或操作,得到的二进制数为 0110,转换成十进制为 6。

4、 按位取反(~):对操作数的每个位执行取反操作,将1变为0,将0变为1。

a = 5 # 二进制表示为 0101

result = ~a    
print(result)  # 输出:-6

这里需要注意的是,我们在之前按位与或者按位或中,是为了书写方便,实际上5和3在32位机器上的内存里的表示是这样的。

5  -  0000 0000 0000 0000 0000 0000 0000 0101
3  -  0000 0000 0000 0000 0000 0000 0000 0001

因为上面的计算中,并不需要前面那么多位,所以我们就只写后面几个,但是按位取反就需要完整的表示出来,对5按位取反就是下面这个

1111 1111 1111 1111 1111 1111 1111 1010

这个在内存当中是个 -6,至于为什么,大家也不用管,有兴趣的可以去查找相关资料来了解,负数的补码表示方式,本文就不讨论这个问题。

5、 按位左移(<<):将操作数的所有位向左移动指定的位数。

a = 5   # 二进制表示 0101

result = a << 2
print(result)  #:20

在述示例中,按位左移运算符(<<)将变量a的所有位向左移2位。结果是将a的二进制数 0101 左移2位,得到的二进制数为 10100,转换成十进制为 20。

6、 按位右移(>>):将一个操作数的所有位向右移动指定位数。

a = 5   # 二进制表示为 0101

result = a >> 1
print(result)  # 输出:2

在述示例中,按位右运算符(>>)将变量a的所有位向右移动1位。结果是将a的二进制数 0101 右移1位,得到的二进制数为 0010,转换成十进制为 2。

这些位运算符可以用于对整数进行位级操作。通过使用这些运算符,你可以在位级上处理二进制数据,提取或操作其中的位,满足特定需求。请注意,位运算符仅适用于整数类型。

更多精彩内容,请关注同名公众:一点sir(alittle-sir)

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

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

相关文章

无涯教程-JavaScript - COUPNCD函数

描述 COUPNCD函数返回一个数字,该数字表示结算日期之后的下一个息票日期。 语法 COUPNCD (settlement, maturity, frequency, [basis])争论 Argument描述Required/OptionalSettlement 证券的结算日期。 证券结算日期是指在发行日期之后将证券交易给买方的日期。 RequiredMa…

spring入门之环境搭建!!!

1.创建一个maven项目。 不会配置maven环境的可以看这里&#xff1a;maven的下载安装与配置环境变量&#xff01;&#xff01;&#xff01;&#xff08;全网最详细&#xff09;_明天更新的博客-CSDN博客 2.引入依赖 <dependencies><dependency><groupId>or…

Python自动化测试框架【生成测试报告】

如何才能让用例自动运行完之后&#xff0c;生成一张直观可看易懂的测试报告呢&#xff1f; 小编使用的是unittest的一个扩展HTMLTestRunner 环境准备 使用之前&#xff0c;我们需要下载HTMLTestRunner.py文件 点击HTMLTestRunner后进入的是一个写满代码的网页&#xff0c;小…

MySQL (2) DQL

目录 操作须知 1 单表查询 1.1 范围查询 1.2 模糊查询 1.3 去重查询 1.4 正则查询 1.5 替换查询 1.6 排序查询 1.7 聚合分组查询 1.7.1 聚合查询(只有1行) 1.7.2 分组查询(针对"聚合查询") 1.8 分页查询 1.9 拼接查询 2 多表查询 2.1 内连接 2.2 外连…

DT Paint Effects工具(一)

Paint Effects面板简介 Paint Effects工具 只是显示&#xff0c;和渲染无关 压力比例 物体绘画 模板笔刷设置 恢复默认设置 翻转管方向 平面绘画 共享笔刷 不同笔刷共享 选择笔刷 创建修改器 创建循环动画 笔刷弹簧 简化曲线路径 笔刷控制曲线 笔刷附件到曲线 生产压力曲线 自动…

C++:stack和queue的使用以及底层实现

stack和queue的使用以及底层实现 1.适配器模式2.stack的介绍和使用2.1stack的介绍2.2stack的使用 3.queue的介绍和使用3.1queue的介绍3.2queue的使用 4.仿函数介绍5.priority_queue的介绍和使用5.1priority_queue的介绍5.2priority_queue的使用 6.deque的介绍6.1deque的实现原理…

Java从入门到精通-数组(一)

0.思维导图 1.数组概述 • 1.1 数组的定义 在编程中&#xff0c;数组是一种用于存储多个相同类型的数据元素的数据结构。数组提供了一种有序的方式来组织和访问数据&#xff0c;每个元素都有一个唯一的索引&#xff0c;通过索引可以快速访问元素。 • 1.2 数组的重要性 数据…

状态管理艺术——借助Spring StateMachine驭服复杂应用逻辑

文章目录 1. 什么是状态2. 有限状态机概述3. Spring StateMachine4. Spring StateMachine 入门小案例4.1 接口测试 5. 总结 1. 什么是状态 在开发中&#xff0c;无时无刻离不开状态的一个概念&#xff0c;任何一条数据都有属于它的状态。 比如一个电商平台&#xff0c;一个订…

自动化测试的重要性:为何追求自动化?

为什么需要自动化测试&#xff1f; 代替手工重复操作&#xff0c;测试工程师可以花更多时间在设计全面的测试用例和新功能测试上 【代替手工重复】 提升回归测试的效率&#xff0c;适合敏捷开发过程 【提升回归效率】 更好的利用非工作时间执行测试&#xff0c;工作时间分析失…

油猴浏览器(安卓)

油猴浏览器页面设计非常简约&#xff0c;在主页上还为小伙伴们推荐了很多的常用书签&#xff0c;像油猴脚本&#xff0c;常用导航&#xff0c;新闻&#xff0c;热搜类的&#xff0c;快递查询等等&#xff0c;可以设置快捷访问&#xff0c;把常用到的一些网站设置在主页上。 浏览…

代码随想录Day_60打卡

①、柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 事例&#xff1a; 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;1…

Chrome 117 发布:新 Web 开发调试技巧都在这了!

简介&#xff1a;Chrome 更新了最新版本 Chrome 117&#xff0c;更新了很多实用的DevTools 新特性。 首先介绍大家最熟悉的Network面板&#xff0c;看看给我们带来了什么好玩的~ Network 面板改进 更快地在本地覆盖网页内容 现在&#xff0c;本地覆盖功能更加简化&#xff0…

【数据结构】二叉树基础入门

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

Alibaba(商品详情)API接口

为了进行电商平台 的API开发&#xff0c;首先我们需要做下面几件事情。 1&#xff09;开发者注册一个账号 2&#xff09;然后为每个alibaba应用注册一个应用程序键&#xff08;App Key) 。 3&#xff09;下载alibaba API的SDK并掌握基本的API基础知识和调用 4&#xff09;利…

解锁“高级特权” 偷偷用。千万别声张

现在的手机修图软件&#xff0c;功能是越来越强大了。之前需要用到电脑端PS的功能&#xff0c;现在手机上的修图软件就能实现&#xff0c;还是一键处理的傻瓜操作。 你离P图大神只差一个APP——「大神批图」&#xff0c;已解锁限制&#xff0c;安装即是VIP。 功能非常丰富&…

多元共进|创新技术提供助力,共创增长机遇

谷歌致力于推动业务和应用长效增长 助力开发者优化用户体验 一起来了解 2023 Google 开发者大会上 谷歌如何将创新技术 融入商业合作和智能家居生态 用技术赋能业务增长 以科技点亮智慧生活 谷歌坚持以 AI 为技术核心&#xff0c;不断投入研究&#xff0c;并将其应用至各类场景…

【C++刷题】经典简单题第二辑

回文排列 class Solution { public:bool canPermutePalindrome(string s) {// 记录字符出现的次数int count[256] {0};for(size_t i 0; i < s.size(); i)count[s[i]];// 记录字符出现次数为奇数的个数int flag 0;for(size_t i 0; i < 256; i)if(count[i] % 2 1)f…

JavaScript作用域链与预解析

查找上一级 JavaScript的预解析 js解析器在运行js代码时会先进行预解析,再进行代码的执行 预解析时js引擎会把js里面所有的var还有function提升到当前作用域的最前面 代码执行,按照代码书写的顺序从上往下执行 预解析分为变量预解析(变量提升)与函数预解析(函数提升) 1.变量…

优秀的 Modbus 主站(主机、客户端)仿真器、串口调试工具

文章目录 优秀的 Modbus 主站&#xff08;主机、客户端&#xff09;仿真器、串口调试工具主要功能软件截图 优秀的 Modbus 主站&#xff08;主机、客户端&#xff09;仿真器、串口调试工具 modbus master,modbus,串口,工控,物联网,PLC,嵌入式 官网下载地址&#xff1a;http:/…

七)Stable Diffussion使用教程:附加功能

图生图右侧有个附加功能选项,里面其实也存在一个图片放大(缩放)功能,而且因为它不涉及重绘的过程,所以不需要任何提示词,适用于任何图片(包括非 SD 生成的图片)。 原理:在拉伸放大的基础上适当对色块和线条的边缘做了模糊处理,和其他工具的放大原理类似。 观察界面…