python 基础篇 day 3 运算符大全

news/2024/5/8 2:47:15/文章来源:https://blog.csdn.net/m0_74921567/article/details/132447532

文章目录

  • 什么是运算符
  • 算术运算符
      • 种类
      • 举例
      • 注意
          • 运算顺序:
          • 整数除法和浮点数除法
          • 取模运算
          • 幂运算
          • 字符串拼接
          • 注意整数与浮点数之间的运算
          • 注意溢出问题
  • 赋值运算符
      • 种类
      • 举例
      • 注意事项
          • 赋值顺序
          • 多重赋值
          • 增量赋值运算符
          • 赋值运算符链式操作
          • 注意可变对象的赋值
          • 注意不可变对象的赋值
          • 赋值运算符的优先级
          • 补充
  • 比较运算符
      • 种类
      • 举例
      • 注意
          • 比较运算符返回的结果是布尔类型(true 或 false)。
          • 在比较浮点数时的精度问题
          • 在比较字符时,比较的是字符的 ASCII 值。
          • 字符串之间不能直接使用比较运算符进行比较
  • 逻辑运算符
      • 种类
      • 举例
      • 注意
          • 不限类型
          • 使用短路求值
          • 注意优先级
  • 位运算符
      • 种类
      • 举例
      • 注意
          • 位运算符只能用于整数类型(包括整型和布尔类型)的操作数。
          • 位运算符按位地操作操作数的二进制表示。
          • 对于有符号整数,Python 使用补码表示法。
          • 会根据操作数的位数自动进行位数扩展(填充零)或截断操作。
          • 可能会遇到溢出的情况,即结果超出了操作数所能表示的范围。
  • 成员运算符
      • 种类
      • 举例
      • 注意
          • 成员运算符用于检查一个值是否存在于一个序列(如字符串、列表、元组等)中。
          • 成员运算符对于不同类型的序列有不同的工作方式:
  • 身份运算符
      • 种类
      • 举例
      • 注意
          • 身份运算符用于比较两个对象的身份(内存地址)是否相同。
          • 注意身份运算符的适用范围
          • 一般不用于不可变对象

什么是运算符

举个栗子

5 - 3

5,3都是操作数,-就是运算符

算术运算符

种类

加法:+
减法:-
乘法:*
除法:/
取模(取余):%
幂运算:**
整除://

举例

下面以 a= 10 ,b = 20为例
在这里插入图片描述

注意

运算顺序:

Python遵循数学中的运算优先级,先进行括号内的运算,然后是幂运算,接着是乘法、除法和取模运算,最后是加法和减法运算。如果有多个运算符混合在一起,可以使用括号来明确运算的顺序。

整数除法和浮点数除法

在Python中,除法运算符/会返回一个浮点数结果,即使被除数和除数都是整数。如果你需要进行整除,可以使用双斜杠运算符//。

取模运算

取模运算符%用于获取两个数相除的余数。需要注意的是,取模运算的结果与被除数的符号相同。

例如,5 % 2的结果是1,而-5 % 2的结果是-1。

幂运算

幂运算符**用于计算一个数的指数幂。

例如,2 ** 3的结果是8(即2的3次方)。

字符串拼接

加法运算符+用于字符串的拼接。当其中一个操作数是字符串时,它们将被连接在一起。
例如,"Hello, " + ‘666’ 的结果是 “Hello, 666”

注意整数与浮点数之间的运算

在Python中,整数与浮点数进行运算时,结果将会自动转换为浮点数

例如,3 + 2.5的结果是5.5。

注意溢出问题

当进行数值运算时,需要注意结果是否会导致数据溢出。在使用大整数或大浮点数进行运算时,需要特别注意结果是否超过了数据类型的范围。

赋值运算符

种类

简单赋值:=
加法赋值:+=
减法赋值:-=
乘法赋值:*=
除法赋值:/=
取模赋值:%=
幂运算赋值:**=
整除赋值://=

举例

在这里插入图片描述

注意事项

赋值顺序

赋值运算符=将右侧的值赋给左侧的变量。注意确保赋值操作符的右侧是要赋给左侧的变量的值。

多重赋值

Python支持多重赋值,即在一条语句中同时为多个变量赋不同的值

例如,a, b, c = 10, 20, 30
这样就可以将变量a赋值为10,变量b赋值为20,变量c赋值为30。

增量赋值运算符

增量赋值运算符(如+=、-=、*=等)结合了算术运算符和赋值运算符。它们可以简化代码,并在执行赋值的同时进行运算。

例如,a += 5等价于a = a + 5。

赋值运算符链式操作

Python允许连续使用赋值运算符进行链式赋值。

例如,a = b = c = 1可以连续将变量a、b和c都赋值为1。

注意可变对象的赋值

当将一个可变对象(如列表或字典)赋给另一个变量时,实际上是将对象的引用赋给了变量。这意味着对其中一个变量所做的修改会影响到另一个变量。要注意这种引用的副作用。

注意不可变对象的赋值

当将一个不可变对象(如数字、字符串或元组)赋给另一个变量时,实际上是创建了一个新的对象,并将其赋给变量。对其中一个变量所做的修改不会影响到另一个变量

赋值运算符的优先级

赋值运算符具有较低的优先级,因此在复合表达式中使用赋值运算符时,需要注意运算的顺序和结果。

补充
  • a += 5等价于a = a + 5,但是前者直接对a修改,更快,地址也不变,后者,是先修改在赋值,地址可能会变
    在这里插入图片描述
  • 在赋值运算符链式操作中,变量之间是共享同一个对象的引用。这意味着对其中一个变量所做的修改会影响到其他变量。因此,在使用这些赋值方式时要小心处理可变对象的情况,以免出现意料之外的结果。
  • 当使用多重赋值和赋值运算符链式操作时,对可变对象(如列表)的修改会体现出明显的差异
# 多重赋值
a = b = [1, 2, 3]
a.append(4)
print(b)  # 输出: [1, 2, 3, 4]# 赋值运算符链式操作
c = d = [1, 2, 3]
c = c + [4]
print(d)  # 输出: [1, 2, 3]

比较运算符

种类

等于:==
不等于:!=
大于:>
小于:<
大于等于:>=
小于等于:<=

举例

在这里插入图片描述

注意

比较运算符返回的结果是布尔类型(true 或 false)。
在比较浮点数时的精度问题

由于浮点数的精度问题,最好使用相对误差或容忍误差的方式来进行比较。

在比较字符时,比较的是字符的 ASCII 值。
字符串之间不能直接使用比较运算符进行比较

需要使用字符串的相关方法(如 strcmp 或相关库函数)来实现字符串的比较。

逻辑运算符

种类

与:and
或:or
非:not

举例

假设 a = 10,b=20
在这里插入图片描述

注意

不限类型

Python 中的逻辑运算符的操作数可以是任意类型的,不仅限于布尔类型。

使用短路求值

逻辑与运算符和逻辑或运算符都使用短路求值的策略,即只有在必要时才会计算和评估第二个条件。(相当于c语言的&&,||)

注意优先级

Python 的逻辑运算符具有优先级,可以使用括号来明确指定运算顺序,避免歧义。

位运算符

种类

按位与(&):对两个操作数的每个对应位执行位与操作。
按位或(|):对两个操作数的每个对应位执行位或操作。
按位异或(^):对两个操作数的每个对应位执行位异或操作。
按位取反(~):反转操作数的每一位,包括符号位。
左移(<<):将操作数的各个位向左移动指定的位数。
右移(>>):将操作数的各个位向右移动指定的位数。

举例

在这里插入图片描述

注意

位运算符只能用于整数类型(包括整型和布尔类型)的操作数。

如果应用于其他类型的操作数,Python 会自动将其转换为整数进行运算。

位运算符按位地操作操作数的二进制表示。

因此,在使用位运算符之前,需要确保你理解操作数的二进制表示形式。

对于有符号整数,Python 使用补码表示法。

这意味着对于负数,最高位是符号位(1 表示负数),其余位表示数值部分。

会根据操作数的位数自动进行位数扩展(填充零)或截断操作。

例如,针对两个操作数长度不同的情况下,Python 会将较短的操作数补充到相同的位数,然后再进行位运算。

可能会遇到溢出的情况,即结果超出了操作数所能表示的范围。

在使用位运算符时,应注意操作数的取值范围,以避免溢出问题。

成员运算符

种类

判断是否为成员:in
判断是否不是成员:not in

举例

在这里插入图片描述

注意

成员运算符用于检查一个值是否存在于一个序列(如字符串、列表、元组等)中。
成员运算符对于不同类型的序列有不同的工作方式:
  • 字符串:成员运算符检查一个子字符串是否存在于大字符串中
  • 列表和元组:成员运算符检查一个元素是否存在于列表或元组中
  • 对于字典类型的数据结构,成员运算符只能用于检查键是否存在,而不能用于检查值是否存在

身份运算符

种类

判断两个对象是否相等:is
判断两个对象是否不相等:is not

举例

在这里插入图片描述

注意

身份运算符用于比较两个对象的身份(内存地址)是否相同。

== 比较对象是否相等 根据数据的值和类型
is 根据俩者的地址

注意身份运算符的适用范围

它通常用于比较可变对象(如列表、字典)或自定义对象的身份。

一般不用于不可变对象

对于不可变对象(如数字、字符串、元组),它们的身份是不可更改的,因此身份运算符对它们没有太多意义。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于swing的超市信息管理系统java jsp仓库进销存mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的超市信息管理系统 系统有1权限&#xff1…

[保研/考研机试] KY27 查找学生信息 清华大学复试上机题 C++实现

题目链接&#xff1a; 查找学生信息_牛客题霸_牛客网输入N个学生的信息&#xff0c;然后进行查询。。题目来自【牛客题霸】https://www.nowcoder.com/share/jump/437195121692782745731 描述 输入N个学生的信息&#xff0c;然后进行查询。 输入描述&#xff1a; 输入的第一…

宠物店小程序制作

随着移动互联网的快速发展&#xff0c;宠物店经营者们也纷纷意识到线上市场的潜力。通过开发一款宠物小程序&#xff0c;你可以将你的宠物店推向线上的新机遇&#xff01; 【乔拓云】是一个专业的小程序开发平台&#xff0c;它提供了一套简单易用的工具&#xff0c;帮助你快速创…

C语言刷题(16)

第一题 第二题 注意 Printf&#xff08;&#xff09;可以直接在里面放字符指针进行打印 第三题 第四题 第五题 第六题 第七题 或者

C++核心编程——类和对象(二)、友元、多态、文件操作

C对象模型和this指针 4.3.1 成员变量和成员函数分开存储 在C中&#xff0c;类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 空类&#xff08;类里面是空的&#xff09;&#xff0c;空对象占用内存空间为&#xff1a;1字节。 静态成员变量&#xff0…

内网 里面安装 vue

1.先在内网电脑上安装node,跟自己电脑一样的版本 2.把自己电脑 node里面 node-cache, node_global&#xff0c;node_modules 三个文件 拷贝到内网电脑 的node 里面 3.内网在配置 node_cache的环境变量环境变量如何配置连接

空间换时间-五秒出解:从900ms到5ms的幕后优化大揭秘!

作者&#xff1a;麦客奥德彪 探索数据操作的效率是软件开发中的一项重要任务。开发中遇到了Java中的ArrayList和removeAll方法&#xff0c;意外发现当面对大量数据时&#xff0c;其执行效率可能会让人瞠目结舌&#xff0c;高达900毫秒以上&#xff01;然而&#xff0c;通过一系…

Linux系统安全:NAT(SNAT、DNAT)

目录 一.NAT 二.SNAT 三.DNAT 一.NAT NAT: network address translation&#xff0c;支持PREROUTING&#xff0c;INPUT&#xff0c;OUTPUT&#xff0c;POSTROUTING四个链 请求报文&#xff1a;修改源/目标IP&#xff0c; 响应报文&#xff1a;修改源/目标IP&#xff0c;根据…

期权分仓开户资金是否安全?具体保障措施有哪些?

网上关于期权分仓系统的真假一直都没有定论&#xff0c;两方人的争论也让很多没有接触过期权分仓系统的人摸不着头脑&#xff0c;那么期权分仓靠谱吗&#xff1f;资金在里面安全吗&#xff1f;下文为大家科普期权分仓开户资金是否安全?具体保障措施有哪些&#xff1f; 一、期权…

如何使用CSS实现一个拖拽排序效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现拖拽排序效果的CSS和JavaScript示例⭐ HTML 结构⭐ CSS 样式 (styles.css)⭐ JavaScript 代码 (script.js)⭐ 实现说明⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦…

震惊!友达台中厂长传过劳逝世 | 百能云芯

8月23日消息&#xff0c;近日面板大厂友达风波不断&#xff0c;8月3日有消息称&#xff0c;生产笔电的5代厂与电视的6代厂已经半年没有订单了&#xff0c;面板产业很惨&#xff0c;预计裁员100至200人。今天接到消息称&#xff0c;任职才1年的台中友达6A厂厂长&#xff0c;传因…

深度刨析数据要素,整合数据资源

数字经济已成为经济发展的一个核心引擎。数据作为新型生产要素&#xff0c;对传统生产方式变革具有重大影响&#xff0c;要构建以数据为关键要素的数字经济。 数据要素的定义 数据要素是指参与到社会生产经营活动中&#xff0c;为所有者或使用者带来经济效益的数据资源。因此…

国密算法介绍

一、简述 商用密码 商用密码是中华人民共和国政府用于非国家机密信息保护所采用的一系列密码技术和密码产品的总称&#xff0c;其相关技术为国家秘密。商用密码的研发及使用由国家密码管理局统一管理。 国密算法 国密算法是指中国自主设计和使用的密码算法标准&#xff0c;其…

MYSQL 统计停车时长百分比

SELECTCOUNT(*) AS 数量,subquery.total_count AS 总数,COUNT(*) * 100 / subquery.total_count AS 百分比,CASEWHEN park_long < 900 THEN 15分钟以内WHEN park_long > 900 AND park_long < 3600 THEN 15-60分钟WHEN park_long > 3600 AND park_long < 10800 T…

C语言刷题(14)

第一题 第二题 第三题 第四题 第五题 第六题 第七题

【Java】树结构数据的搜索

这里写自定义目录标题 需要实现的效果前端需要的json格式&#xff1a;一定是一个完整的树结构错误错误的返回格式错误的返回格式实现的效果 正确正确的返回格式正确的展示画面 后端逻辑分析代码总览 数据库表结构 需要实现的效果 前端需要的json格式&#xff1a;一定是一个完整…

springboot之多数据源配置

文章目录 一、多数据源的典型使用场景1 业务复杂&#xff08;数据量大&#xff09;2 读写分离 二、如何实现多数据源通过AbstractRoutingDataSource动态指定数据源多数据源切换方式AOPMyBatis插件 三、spring集成多个Mybatis框架 实现多数据源控制四、多数据源事务控制1.只使用…

DNQ算法原理(Deep Q Network)

1.强化学习概念 学习系统没有像很多其它形式的机器学习方法一样被告知应该做出什么行为 必须在尝试了之后才能发现哪些行为会导致奖励的最大化 当前的行为可能不仅仅会影响即时奖励&#xff0c;还会影响下一步的奖励以及后续的所有奖励 每一个动作(action)都能影响代理将来的…

智能安全帽_防抖视频定位智能安全帽头盔

智能安全帽具备出色的性能、超低功耗、广范围覆盖和简单的外围电路等优势&#xff0c;同时还拥有丰富的外部接口。它支持移动/联通/电信的4G5G网络&#xff0c;涵盖了LTE-TDD频段(B34/B38/B39/B40/B41)、LTE-FDD频段(B1/B3/B5/B8)、WCDMA频段(B1/B5/B8)、TD-SCDMA频段(B34/B39)…

EureKa快速入门

EureKa快速入门 远程调用的问题 多个服务有多个端口&#xff0c;这样的话服务有多个&#xff0c;硬编码不太适合 eureKa的作用 将service的所有服务的端口全部记录下来 想要的话 直接从注册中心查询对于所有服务 每隔一段时间需要想eureKa发送请求 保证服务还存活 动手实践 …