【Python基础篇】你了解python中运算符吗

文章目录

  • 1. 算数运算符
    • 1.1 //整除
    • 1.2 %取模
    • 1.3 **幂
  • 2. 赋值运算符
  • 3. 位运算符
    • 3.1 &(按位与)
    • 3.2 |(按位或)
    • 3.3 ^(按位异或)
    • 3.4 ~(按位取反)
    • 3.5 <<(左移)
    • 3.6 >>(右移)
  • 4. 比较运算符
  • 5. 逻辑运算符
    • 5.1 and
    • 5.2 or
    • 5.3 not
  • 6. 成员运算符
    • 6.1 in
    • 6.2 not in
  • 7. 身份运算符

1. 算数运算符

算术运算符有:+、-、*、/、//、%、**,依次对应加、减
乘、除、整除、模、幂。
其中前四个就和数学中一样,我们来说一下后面三个。

1.1 //整除

//就和它的名一样,整除,就是运算后只会取整数部分。例如10除3它的结果就会等于3,舍去的余数部分。
代码:

a = 10
b = 3
print(a // b)

运行结果:
在这里插入图片描述

1.2 %取模

%就是取模,就是取余的意思,和//对立,//只要整数部分,那%就是只要余数部分。例如:10%3结果就是1。

a = 10
b = 3
print(a % b)

在这里插入图片描述

1.3 **幂

** 就是幂的意思。例如:2 ** 3就相当于2的3次方,结果为8,2 ** 4就相当于2的4次方,结果为16。

a = 2
b = 4
print(a ** b)

在这里插入图片描述

2. 赋值运算符

赋值运算符有:=、+=、-=、*=、/=、//=、%=,首先等=就是等号的意思,而后面的加等,减等……用起来其实都是一样的,这里演示一个大家应该就懂了。
代码演示:

a = 1
print(a)
a += 2  # 相当于a = a + 2,原本的a等于1,现在加上2,那么就等于3了
print(a)  # 打印结果为3

在这里插入图片描述

后面的-=、*=、/=、//=、%=的应用和+=规则相同。

3. 位运算符

位运算符有:&、|、^、~、<<、>>, 依次是按位与、按位或、按位异或、按位取反、左移、右移。
位运算符用于对整数的二进制表示进行直接操作,就是运算时不是直接对变量进行运算,而是先转换为二进制,对二进制整数操作。

3.1 &(按位与)

对每一位执行逻辑与操作。如果两个相应的二进制位都为1,则该位的结果为1;否则为0。

a = 60  # 0011 1100  
b = 13  # 0000 1101  
c = a & b  # 0000 1100  
print(c)  # 输出: 12

3.2 |(按位或)

对每一位执行逻辑或操作。如果两个相应的二进制位中至少有一个为1,则该位的结果为1;否则为0。

a = 60  # 0011 1100  
b = 13  # 0000 1101  
c = a | b  # 0011 1101  
print(c)  # 输出: 61

3.3 ^(按位异或)

对每一位执行逻辑异或操作。如果两个相应的二进制位不相同,则该位的结果为1;如果相同,则为0。

a = 60  # 0011 1100  
b = 13  # 0000 1101  
c = a ^ b  # 0011 0001  
print(c)  # 输出: 49

3.4 ~(按位取反)

对数的二进制表示进行取反操作。即将0变为1,将1变为0。需要注意的是,取反后的结果通常是补码形式表示的负数(对于有符号整数而言),这取决于具体的位数和系统架构。

a = 60  # 0011 1100  
b = ~a  # 1100 0011...(取决于整数类型,这里假设是32位)  
# 注意:直接打印b会得到一个负数,因为Python使用补码表示负数  
print(b)  # 输出: -61(假设是32位系统)

3.5 <<(左移)

数的各二进制位全部左移若干位,由右侧的数指定移动的位数,高位丢弃,低位补0。

a = 60  # 0011 1100  
b = a << 2  # 0011 1100 -> 1111 0000  
print(b)  # 输出: 240

3.6 >>(右移)

数的各二进制位全部右移若干位,由右侧的数指定移动的位数。对于无符号数,高位补0;对于有符号数,则取决于具体的系统,可能是补0或补1(即算术右移)。Python中的整数是有符号的,但右移操作在Python 3.x中总是用0来填充高位。

a = 60  # 0011 1100  
b = a >> 2  # 0011 1100 -> 0000 1111  
print(b)  # 输出: 15

4. 比较运算符

比较运算符有:==、!=、<、>、<=、>=, ==就是数学中=的意思,但是并不能直接写=,前面我们也知道了=是赋值的意思,!=就是不等于的意思,后面相信就不用介绍了。

print(1 == 1)  # 正确的,结果true
print(1 != 1)  # 错误的,结果false

在这里插入图片描述

5. 逻辑运算符

逻辑运算符有:and、or、not三种,依次是逻辑与运算符、逻辑或运算符、逻辑非运算符,使用起来就和数学中的与或非一样。

5.1 and

逻辑与运算符。如果它的两个操作数都是真(True),则整个表达式的结果为真(True)。如果任一操作数为假(False),则结果为假(False)。

print(True and True)  # 输出: True  
print(True and False) # 输出: False  
print(False and True) # 输出: False  
print(False and False) # 输出: False

5.2 or

逻辑或运算符。如果它的两个操作数中至少有一个为真(True),则整个表达式的结果为真(True)。如果两个操作数都是假的(False),则结果为假(False)。

print(True or True)  # 输出: True  
print(True or False) # 输出: True  
print(False or True) # 输出: True  
print(False or False) # 输出: False

5.3 not

逻辑非运算符。用于反转其操作数的布尔值。如果操作数是真(True),则结果为假(False)。如果操作数是假(False),则结果为真(True)。

print(not True)  # 输出: False  
print(not False) # 输出: True

6. 成员运算符

成员运算符有:in、not in两种。用于检查某个值是否存在于某个集合中(比如列表、元组、字符串、集合或字典的键中)。
集合后面会讲,这里就简单使用一样,懂in和not in什么意思就可以。

6.1 in

如果指定的值在指定的序列中(或作为字典的键),则返回True;否则返回False。

# 列表  
my_list = [1, 2, 3, 4, 5]  
print(3 in my_list)  # 输出: True  
print(6 in my_list)  # 输出: False  # 字符串  
my_str = "hello"  
print('e' in my_str)  # 输出: True  
print('z' in my_str)  # 输出: False  # 字典(检查键)  
my_dict = {'a': 1, 'b': 2, 'c': 3}  
print('a' in my_dict)  # 输出: True  
print('d' in my_dict)  # 输出: False

6.2 not in

这个运算符是in的否定形式。如果指定的值不在指定的序列中(或不是字典的键),则返回True;否则返回False。

# 列表  
my_list = [1, 2, 3, 4, 5]  
print(6 not in my_list)  # 输出: True  
print(3 not in my_list)  # 输出: False  # 字符串  
my_str = "hello"  
print('e' not in my_str)  # 输出: False  
print('z' not in my_str)  # 输出: True  # 字典(检查键)  
my_dict = {'a': 1, 'b': 2, 'c': 3}  
print('a' not in my_dict)  # 输出: False  
print('d' not in my_dict)  # 输出: True

7. 身份运算符

身份运算符 :is、is not 用于测试两个对象是否相同(即,它们是否指向同一个对象或内存地址)。对象内存地址这个概念后面讲,大家是不是觉得好多后面讲,这也是没办法的嘛,先简单后难,这些难点的后面会详解的,大家不用担心,不会影响前面的学习的。

a = [1, 2, 3]  
b = a  
c = [1, 2, 3]  print(a is b)  # 输出: True,因为 a 和 b 指向同一个列表对象  
print(a is c)  # 输出: False,因为虽然 a 和 c 的内容相同,但它们是不同的对象  
print(a == c)  # 输出: True,因为 a 和 c 的内容相同  x = 256  
y = 256  
z = id(x)  
w = id(y)  print(x is y)  # 输出可能取决于Python实现和对象类型,但对于小整数(如-5到256之间的整数),Python通常会缓存这些值,因此这里很可能输出 True  
print(z == w)  # 输出: True,因为id()函数返回对象的唯一标识符(内存地址),这里x和y指向同一个对象  # 示例使用 is not  
print(a is not b)  # 输出: False,因为a和b是同一个对象  
print(a is not c)  # 输出: True,因为a和c不是同一个对象

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

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

相关文章

HTML 【实用教程】(2024最新版)

核心思想 —— 语义化 【面试题】如何理解 HTML 语义化 ?仅通过标签便能判断内容的类型&#xff0c;特别是区分标题、段落、图片和表格 增加代码可读性&#xff0c;让人更容易读懂对SEO更加友好&#xff0c;让搜索引擎更容易读懂 html 文件的基本结构 html 文件的文件后缀为 …

【高录用、快检索、过往5届均已检索、SPIE 出版】第六届无线通信与智能电网国际会议(ICWCSG 2024)

随着科技的飞速发展和能源需求的日益增长&#xff0c;智能电网技术逐渐成为电力行业的重要发展方向。与此同时&#xff0c;无线通信技术在近年来也取得了显著的进步&#xff0c;为智能电网的发展提供了强有力的支持。为了进一步推动无线通信与智能电网的结合与发展&#xff0c;…

学IT上培训班真的有用吗?

在学习IT技术的过程中&#xff0c;你是否也被安利过各种五花八门的技术培训班&#xff1f;这些培训班都是怎样向你宣传的&#xff0c;你又对此抱有着怎样的态度呢&#xff1f;在培训班里学技术&#xff0c;真的有用吗&#xff1f; 一、引入话题 IT行业是一个快速发展和不断变化…

C++初学者指南-4.诊断---未定义行为检测器

C初学者指南-4.诊断—未定义行为检测器 未定义行为检测器(UBSAN) 适用编译器&#xff1a;clang,g在运行时检测许多类型的未定义行为 解引用空指针从未对齐的指针读取整数溢出被0除 … 在代码中加入额外的指令:在调试构建中增加运行时约25% 示例&#xff1a;有符号整形溢出 …

Git在多人开发中的常见用例

前言 作为从一个 svn 转过来的 git 前端开发&#xff0c;在经历过git的各种便捷好处后&#xff0c;想起当时懵懂使用git的胆颤心惊&#xff1a;总是害怕用错指令&#xff0c;又或者遇到报错就慌的场景&#xff0c;想起当时查资料一看git指令这么多&#xff0c;看的头晕眼花&am…

深度学习原理与Pytorch实战

深度学习原理与Pytorch实战 第2版 强化学习人工智能神经网络书籍 python动手学深度学习框架书 TransformerBERT图神经网络&#xff1a; 技术讲解 编辑推荐 1.基于PyTorch新版本&#xff0c;涵盖深度学习基础知识和前沿技术&#xff0c;由浅入深&#xff0c;通俗易懂&#xf…

家里老人能操作的电视直播软件,目前能用的免费看直播的电视软件app,适合电视和手机使用!

2024年许多能看电视直播的软件都不能用了&#xff0c;家里的老人也不会手机投屏&#xff0c;平时什么娱乐都没有了&#xff0c;这真的太不方便了。 很多老人并不喜欢去买一个广电的机顶盒&#xff0c;或者花钱拉有线电视。 现在的电视大多数都是智能电视&#xff0c;所以许多电…

Redis基本命令源码解析-字符串命令

1. set 用于将kv设置到数据库中 2. mset 批量设置kv mset (msetnx) key1 value1 key2 value2 ... mset:msetCommand msetnx:msetnxCommand msetCommand和msetnxCommand都调用msetGenericCommand 2.1 msetGenericCommand 如果参数个数为偶数,则响应参数错误并返回 如果…

【项目日记(一)】梦幻笔耕-数据层实现

❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多项目内容 目录 1.前言2.后端模块3数据库设计4.mapper实现4.1UserInfoMapper4.2BlogMapper 5.总结 1.…

硬件开发笔记(二十四):贴片电容的类别、封装介绍,AD21导入贴片电容、原理图和封装库3D模型

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140241817 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

存储结构与管理磁盘

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、一切从“/”开始 二、物理设备的命名规则 三、文件系统与数据资料 四、挂载硬件设备 五、添加硬盘设备 六、添加交换分区 七、磁盘容…

如何在 PostgreSQL 中实现数据的增量备份和恢复?

文章目录 一、增量备份的原理二、准备工作&#xff08;一&#xff09;环境配置&#xff08;二&#xff09;创建测试数据库和表&#xff08;三&#xff09;插入初始数据 三、全量备份四、基于时间点的增量备份&#xff08;一&#xff09;开启 WAL 归档&#xff08;二&#xff09…

政策公告与提醒

自 2024 年 4 月 3 日起,您将至少有 30 天的时间来更新应用,使其符合下方所述的政策变更。 我们将推出“儿童安全标准”政策,规定社交应用和约会交友应用必须遵循特定标准,并在 Play 管理中心内以自行认证的形式证明合规后才能发布。 为了提高健康相关应用在 Google Play…

docker 重要且常用命令大全

本文将总结一些常见的重要的docker命令&#xff0c;以作备忘。后续如果有新的比较常用重要的也会更新进来。欢迎补充。 docker服务管理 首先我们要解释一下&#xff1a;systemctl和docker命令的不同 systemctl&#xff1a;是许多 Linux 发行版中默认的初始化系统和服务管理器。…

11.常见的Bean后置处理器

CommonAnnotationBeanPostProcessor (Resource PostConstructor PreDestroy) AutowiredAnnotationBeanPostProcessor (Autowired Value) GenericApplicationContext是一个干净的容器&#xff0c;它没有添加任何的PostProcessor处理器。 调用GenericApplicationContext.refre…

赛元单片机开发工具SOC_Programming_Tool_Enhance_V1.50 分享

下载地址&#xff1a; SOC_Programming_Tool_Enhance_V1.50(LIB0D30).rar: https://545c.com/f/45573183-1320016694-557ebd?p7526 (访问密码: 7526)

docker中实现多机redis主从集群

redis主从集群是每个使用redis的小伙伴都必需知道的&#xff0c;那如何在docker中快速配置呢&#xff1f;这篇来教你快速上手&#xff0c;跟着复制完全就能用&#xff01;&#xff01; 1. 前置准备 1.1 docker安装 以防有小伙伴没预先安装docker&#xff0c;这里提供安装步骤…

视频共享融合赋能平台LnyonCVS国标视频监控平台包含哪些功能

随着国内视频监控应用的迅猛发展&#xff0c;系统接入规模不断扩大。不同平台提供商的接入协议各不相同&#xff0c;导致终端制造商在终端维护时需要针对不同平台的软件版本提供不同的维护&#xff0c;资源造成了极大的浪费。 为响应国家对重特大事件通过视频监控集中调阅来掌…

QListWidget 缩略图IconMode示例

1、实现的效果如下&#xff1a; 2、实现代码 &#xff08;1&#xff09;头文件 #pragma once #include <QtWidgets/QMainWindow> #include "ui_QListViewDemo.h" enum ListDataType { ldtNone -1, ldtOne 0, ldtTwo 1, }; struct ListData…

解决后端限制导致前端配置跨域仍请求失败报504的问题

文章目录 问题一、通过配置跨域方式二、直接真实接口请求三、解决方式四、后端这样做的原因 总结 问题 前端项目设置跨域proxy处理&#xff0c;接口请求不会报跨域&#xff0c;但是接口请求报了504&#xff0c;这种情况如何处理呢&#xff0c;后端又为何要这么做&#xff0c;下…