【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.mfbz.cn/a/777357.html

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

相关文章

【JavaWeb程序设计】JSP编程II

目录 一、输入并运行下面的import_test.jsp页面 1.1 代码运行结果 1.2 修改编码之后的运行结果 二、errorPage属性和isErrorPage属性的使用 2.1 下面的hello.jsp页面执行时将抛出一个异常&#xff0c;它指定了错误处理页面为errorHandler.jsp。 2.1.2 运行截图 2.2 下面…

压测工具---Ultron

压测工具&#xff1a;Ultron 类型&#xff1a;接口级和全链路 接口级 对于接口级别的压测我们可以进行 http接口压测、thrift压测、redis压测、kafka压测、DDMQ压测、MySQL压测等&#xff0c;选对对应的业务线、选择好压测执行的时间和轮数就可以执行压测操作了 全链路 对…

Java新特性梳理——Java15

highlight: xcode theme: vuepress 概述 2020 年 9 月 15 日&#xff0c;Java 15 正式发布&#xff0c;(风平浪静的一个版本)共有 14 个 JEP&#xff0c;是时间驱动形式发布的第六个版本。相关文档&#xff1a;https://openjdk.java.net/projects/jdk/15/ 语法层面变化 密封类 …

【机器学习】基于密度的聚类算法:DBSCAN详解

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 基于密度的聚类算法&#xff1a;DBSCAN详解引言DBSCAN的基本概念点的分类聚类过…

JVM原理(十七):JVM虚拟机即时编译器详解

编译器无论在何时、在何种状态下把Class文件转换成与本地基础设施相关的二进制机器码&#xff0c;他都可以视为整个编译过程的后端。 后端编译器编译性能的好坏、代码优化质量的高低却是衡量一款商用虛拟机优秀与否的关键指标之一。 1. 即时编译器 即时编译器是一个把Java的…

19.【C语言】初识指针(重难点)

内存&#xff1a;所有程序的运行在内存中 用Cheat Engine查看任意程序的内存(16进制&#xff09;&#xff1a; 显示大量的数据 想要定位某个数字 &#xff0c;需要知道地址(类比二维坐标) 如F8的地址为00BCB90008,所以是00BCB908(偏移) ctrlG 则有 内存单元的说明&#xff1…

动态颤抖的眼睛效果404页面源码

动态颤抖的眼睛效果404页面源码&#xff0c; 源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 动态颤抖的眼睛效果404页面源码

Portainer 是一个开源的容器管理平台-非常直观好用的Docker图形化项目

在这个容器化技术大行其道的时代&#xff0c;Docker和Kubernetes几乎成了技术圈的新宠。可是管理起容器来&#xff0c;有时候还是有点头大。命令行操作对于某些小伙伴来说&#xff0c;可能还是有点不太友好。 今天开源君分享一个叫 Portainer 的开源项目&#xff0c;一个用来简…

AI大模型时代的存储发展趋势

从2022年下半年&#xff0c;大模型和AIGC这两个词变得极其火热&#xff0c;而GPU的市场也是一卡难求。对于这种迷乱和火热&#xff0c;让我想起了当年的比特币挖矿和IPFS。似乎世界一年一个新风口&#xff0c;比特币、元宇宙、NFT、AIGC&#xff0c;金钱永不眠&#xff0c;IT炒…

【React】React18 Hooks 之 useReducer

目录 useReducer案例1&#xff1a;useReducer不带初始化函数案例2&#xff1a;useReducer带初始化函数注意事项1&#xff1a;dispatch函数不会改变正在运行的代码的状态注意事项2&#xff1a;获取dispatch函数触发后 JavaScript 变量的值注意事项3&#xff1a;触发了reducer&am…

【MotionCap】pycharm 远程在wsl2 ubuntu20.04中root的miniconda3环境

pycharm wsl2 链接到pycharmsbin 都能看到内容,/root 下内容赋予了zhangbin 所有,pycharm还是看不到/root 下内容。sudo 安装了miniconda3 引发了这些问题 由于是在 root 用户安装的miniconda3 所以安装路径在/root/miniconda3 里 这导致了环境也是root用户的,会触发告警 WA…

Xilinx原语

1. 原语介绍 原语是 Xilinx 器件底层硬件中的功能模块&#xff0c;它使用专用的资源来实现一系列的功能。相比于 IP 核&#xff0c;原语的调用方法更简单&#xff0c;但是一般只用于实现一些简单的功能。本章主要用到了 BUFG、 BUFIO、 IDDR、 ODDR、IDELAYE2 和 IDELAYCTRL。…

14-29 剑和诗人3 – 利用知识图谱增强 LLM 推理能力

知识图谱提供了一种结构化的方式来表示现实世界的事实及其关系。通过将知识图谱整合到大型语言模型中&#xff0c;我们可以增强它们的事实知识和推理能力。让我们探索如何实现这一点。 知识图谱构建 在利用知识图谱进行语言模型增强之前&#xff0c;我们需要从可靠的来源构建…

AIGC | 为机器学习工作站安装NVIDIA 4070 Ti Super显卡驱动

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 0x00 前言简述 话接上篇《AIGC | Ubuntu24.04桌面版安装后必要配置》文章&#xff0c;作为作者进行机器学习的基础篇&#xff08;筑基期&#xff09;&#xff0c;后续将主要介绍机器学习环境之如何…

springboot+vue+mybatis图书馆借阅管理系统+PPT+论文+讲解+售后

21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存储达到…

项目实战--Spring Boot与PageHelper的集成及线程污染解决

一、PageHelper使用背景 公司要做个简单管理系统&#xff0c;要我搭建Spring BootMyBatisPageHelperRedis的项目框架然后交i给实习生来开发。这个其实很简单&#xff0c;但是遇到搭建和使用过程中PageHelper有好多小坑&#xff0c;就记录一下&#xff0c;避免再踩。 版本选择&…

hdu物联网硬件实验2 GPIO亮灯

学院 班级 学号 姓名 日期 成绩 实验题目 GPIO亮灯 实验目的 点亮三个灯闪烁频率为一秒 硬件原理 无 关键代码及注释 const int ledPin1 GREEN_LED; // the number of the LED pin const int ledPin2 YELLOW_LED; const int ledPin3 RED…

Java - JDK17语法新增特性(如果想知道Java - JDK17语法新增常见的特性的知识点,那么只看这一篇就足够了!)

前言&#xff1a;Java在2021年发布了最新的长期支持版本&#xff1a;JDK 17。这个版本引入了许多新的语法特性&#xff0c;提升了开发效率和代码可读性。本文将简要介绍一些常见的新特性&#xff0c;帮助开发者快速掌握并应用于实际开发中。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨…

Mysql笔记-v2【7月5日更新】

零、 help、\h、? 调出帮助 mysql> \hFor information about MySQL products and services, visit:http://www.mysql.com/ For developer information, including the MySQL Reference Manual, visit:http://dev.mysql.com/ To buy MySQL Enterprise support, training, …

深入分析 Android BroadcastReceiver (八)

文章目录 深入分析 Android BroadcastReceiver (八)1. 系统与自定义实现1.1 系统广播机制1.1.1 系统广播的实现原理1.1.2 系统广播的源码分析 1.2 自定义广播机制1.2.1 自定义广播的实现步骤1.2.2 自定义广播的源码分析 2. 广播机制设计的初衷与优势2.1 设计初衷2.2 优势 3. 总…