当前位置: 首页 > news >正文

Python基础之运算符操作

在Python中,运算符的作用就是用于执行各种的运算操作,常见的运算符有算数运算符、比较运算符、逻辑运算符、赋值运算符、成员运算符、身份运算符等。下面我们就来看看在Python中这些运算的详细操作。

算术运算符

算术运算符是用来执行一些基本的数学运算操作,有如下一些。

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • //:整除(取商的整数部分)
  • %:取模(取商的余数)
  • **:幂运算(指数)

代码如下所示。

# 加法运算符示例
a = 5
b = 3
result = a + b  # 将变量a和b相加,结果赋值给result
print("加法运算结果:", result)  # 输出:8# 减法运算符示例
a = 8
b = 3
result = a - b  # 将变量a减去b,结果赋值给result
print("减法运算结果:", result)  # 输出:5# 乘法运算符示例
a = 4
b = 5
result = a * b  # 将变量a和b相乘,结果赋值给result
print("乘法运算结果:", result)  # 输出:20# 除法运算符示例
a = 10
b = 3
result = a / b  # 将变量a除以b,结果赋值给result
print("除法运算结果:", result)  # 输出:3.3333333333333335# 整除运算符示例
a = 10
b = 3
result = a // b  # 将变量a除以b,结果取整数部分,赋值给result
print("整除运算结果:", result)  # 输出:3# 取模运算符示例
a = 10
b = 3
result = a % b  # 取a除以b的余数,结果赋值给result
print("取模运算结果:", result)  # 输出:1# 幂运算符示例
a = 2
b = 3
result = a ** b  # 求a的b次方,结果赋值给result
print("幂运算结果:", result)  # 输出:8

以上就是Python中的算数运算符的基本操作。可以用这些算术运算符实现基本的数学运算。这里需要注意,当两个操作数都是整数时,除法运算符 / 将返回浮点数结果,即使能整除也会返回浮点数。如下所示,如果想要执行整除操作,应使用整除运算符 //

# 除法运算符示例
a = 10
b = 3
result = a / b  # 返回浮点数结果
print(result)  # 输出:3.3333333333333335result = a // b  # 返回整数结果
print(result)  # 输出:3

在进行取模操作的时候,取模运算符 % 返回的结果的符号与被除数的符号相同。如果被除数是正数,结果也是正数;如果被除数是负数,结果也是负数。结果如下所示。

# 取模运算符示例
a = 10
b = 3
result = a % b  # 取a除以b的余数
print(result)  # 输出:1a = -10
b = 3
result = a % b  # 取a除以b的余数
print(result)  # 输出:2

在进行浮点数运算的过程中,由于浮点数的存储方式,可能会出现精度丢失的问题。所以,在比较浮点数时应该使用近似相等的方式,而不是直接使用 == 操作符。在进行整数操作的时候,也可能会出现数据溢出的情况,特别是在超出了计算机的表数范围之后,如果是需要进行一些大数的处理,那么我们可以使用Python提供的大数类型来进行操作,代码如下所示。

# 浮点数精度问题示例
a = 0.1 + 0.2
b = 0.3
print(a == b)  # 输出:False,因为存在浮点数精度问题# 使用近似相等的方式进行比较
epsilon = 1e-10  # 定义一个很小的值
print(abs(a - b) < epsilon)  # 输出:True# 整数溢出问题示例
a = 2 ** 1000  # 计算2的1000次方
print(a)  # 输出一个非常大的整数b = a * a  # 进行整数运算,可能会出现整数溢出问题
print(b)  # 输出:OverflowError: int too large to convert to float

比较运算符

在Python中比较运算符,主要是用来比较两个数据操作之间的关系,其操作返回值使用布尔类型来表示。常见的比较运算符如下所示。

  • ==:等于
  • !=:不等于
  • <:小于
  • >:大于
  • <=:小于等于
  • >=:大于等于
    代码实现如下所示。
# 等于运算符示例
a = 5
b = 5
result = a == b  # 检查a和b是否相等,结果赋值给result
print("等于运算结果:", result)  # 输出:True# 不等于运算符示例
a = 5
b = 10
result = a != b  # 检查a和b是否不相等,结果赋值给result
print("不等于运算结果:", result)  # 输出:True# 小于运算符示例
a = 5
b = 10
result = a < b  # 检查a是否小于b,结果赋值给result
print("小于运算结果:", result)  # 输出:True# 大于运算符示例
a = 10
b = 5
result = a > b  # 检查a是否大于b,结果赋值给result
print("大于运算结果:", result)  # 输出:True# 小于等于运算符示例
a = 5
b = 5
result = a <= b  # 检查a是否小于等于b,结果赋值给result
print("小于等于运算结果:", result)  # 输出:True# 大于等于运算符示例
a = 10
b = 5
result = a >= b  # 检查a是否大于等于b,结果赋值给result
print("大于等于运算结果:", result)  # 输出:True
在进行比较运算符操作的过程中,需要注意比较的数据类型一定是一样的,如果数据类型不一样的话,Python会尝试将它们转换为一致的类型,然后进行比较。如果比较的数据类型不一致,可能会导致意外的结果,因此应确保进行比较的数据类型是一致的。如下所示。
# 数据类型的一致性示例
a = 5
b = '5'
result = a == b  # 检查a和b是否相等,可能会返回False
print("比较结果:", result)  # 输出:False

在对于浮点数的比较过程中,浮点数存在精度问题,因此在比较浮点数时应该使用近似相等的方式,而不是直接使用 == 操作符。当然这个时候我们可以使用一个很小的值(例如1e-10)作为误差范围,进行浮点数比较。如下所示。

# 浮点数的比较示例
a = 0.1 + 0.2
b = 0.3
epsilon = 1e-10  # 定义一个很小的值
result = abs(a - b) < epsilon  # 使用近似相等的方式进行比较
print("比较结果:", result)  # 输出:True

在进行复杂比较的时候,需要注意执行逻辑的优先级,这样可以保证比较之后的数据得到一个正确的结果,如果有不确定的情况可以通过添加括号的方式来明确指定表达式的执行顺序,这样可以得到一个准确的结果。如下所示。

e# 逻辑运算符优先级示例
a = 5
b = 10
c = 15
result = a < b and b < c  # a < b < c,and 运算符优先级高于 <
print("比较结果:", result)  # 输出:True

如何正确的理解和使用比较的结果,对于比较运算符来讲返回的是布尔值(True或False)应该正确理解比较结果的含义,以便根据结果执行相应的操作。如下所示

# 理解比较结果示例
a = 5
b = 10
result = a < b  # 检查a是否小于b,结果为True
if result:print("a小于b")
else:print("a大于等于b")

逻辑运算符

逻辑运算符用来处理逻辑操作,其返回值为布尔类型,常见的逻辑运算符如下所示。

  • and:逻辑与,如果两个条件都为真,则返回真。
  • or:逻辑或,如果至少一个条件为真,则返回真。
  • not:逻辑非,对条件取反。
    代码如下所示。
# 逻辑与运算符示例
a = True
b = False
result = a and b  # 检查a和b是否同时为True,结果赋值给result
print("逻辑与运算结果:", result)  # 输出:False# 逻辑或运算符示例
a = True
b = False
result = a or b  # 检查a和b是否有一个为True,结果赋值给result
print("逻辑或运算结果:", result)  # 输出:True# 逻辑非运算符示例
a = True
result = not a  # 对a取反,结果赋值给result
print("逻辑非运算结果:", result)  # 输出:False# 组合运算示例
x = 10
y = 5
z = 20
result = (x > y) and (x < z)  # 检查x是否大于y并且小于z,结果赋值给result
print("组合运算结果:", result)  # 输出:True# 短路求值示例
a = True
b = False
result = a and (10 / 0)  # 如果a为False,则(10 / 0)将抛出ZeroDivisionError异常,但因为短路求值,不会执行
print("短路求值结果:", result)  # 输出:False

在逻辑与运算符 and 和逻辑或运算符 or 中,如果第一个条件已经能够确定整个表达式的值,则不再计算第二个条件,这种机制称为短路求值。短路求值的机制有助于编写更加高效和安全的代码,但同时也需要注意可能由于短路求值带来的一些意外行为。如下所示。

# 短路求值示例
a = False
result = a and (10 / 0)  # 如果a为False,则(10 / 0)将抛出ZeroDivisionError异常,但因为短路求值,不会执行
print("短路求值结果:", result)  # 输出:False

逻辑运算符执行也是有自己的优先级的,所以在一些复杂的逻辑操作中,需要保证逻辑运算符的优先级,这样可以确保表达式得到正确的结果,同时可以通过括号的方式来制定逻辑运算符的求值顺序。如下所示。

# 逻辑运算符优先级示例
x = 10
y = 5
z = 20
result = (x > y) and (x < z)  # 检查x是否大于y并且小于z,结果赋值给result
print("组合运算结果:", result)  # 输出:True

在使用逻辑运算符时,Python会进行布尔值的隐式转换,将非布尔类型的值转换为布尔值(True或False),我们应该清楚地了解隐式转换的规则,以避免由于类型转换带来的意外结果。如下所示。

# 布尔值的隐式转换示例
a = 10
b = 0
result = a and b  # 如果a为真,则结果为b;如果a为假,则结果为a
print("隐式转换结果:", result)  # 输出:0

理解含义写出正确的判断,实现正确的业务逻辑,如下所示。

# 理解逻辑表达式的含义示例
is_adult = True
has_license = False
result = is_adult and not has_license  # 检查是否成年并且没有驾照
if result:print("可以考取驾照")
else:print("不能考取驾照")

使用逻辑运算符时,需要注意短路求值、逻辑运算符优先级、布尔值的隐式转换和理解逻辑表达式的含义。这些注意事项有助于编写清晰、正确和高效的逻辑表达式。

相关文章:

Python基础之运算符操作

在Python中&#xff0c;运算符的作用就是用于执行各种的运算操作&#xff0c;常见的运算符有算数运算符、比较运算符、逻辑运算符、赋值运算符、成员运算符、身份运算符等。下面我们就来看看在Python中这些运算的详细操作。 算术运算符 算术运算符是用来执行一些基本的数学运…...

【busybox记录】【shell指令】uniq

目录 内容来源&#xff1a; 【GUN】【uniq】指令介绍 【busybox】【uniq】指令介绍 【linux】【uniq】指令介绍 使用示例&#xff1a; 去除重复行 - 默认输出 去除重复行 - 跳过第n段&#xff08;空格隔开&#xff09;&#xff0c;比较n1以后的内容&#xff0c;去重 去…...

Nginx从入门到精通速成

文章目录 一. **Nginx** **的简介**1.1 什么是 **nginx**1.2 正向代理1.3 反向代理1.4 **负载均衡**1.5 动静分离 二. **Nginx** **的安装**三. **Nginx** **的常用的命令**四. **Nginx** **的配置文件**五. **Nginx** **配置实例**反向代理实例**1**5.1 实现效果5.2 准备工作5…...

Flutter笔记:Widgets Easier组件库(4)使用按钮组

Flutter笔记 Widgets Easier组件库&#xff08;4&#xff09;&#xff1a;使用按钮组 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress…...

Docker常用命令 镜像库设置

Docker常用命令 & 镜像库设置 1. 镜像操作2. 容器操作3. 网络操作4. Docker Compose操作5. Docker volume操作6. Docker run介绍7. 镜像库设置 1. 镜像操作 列出本地所有的镜像 docker images从远程仓库拉取镜像到本地 docker pull <image_name>删除本地的指定镜像…...

无人零售,重塑购物新纪元

在这个快节奏的时代&#xff0c;科技的每一次跃进都在悄无声息地改变着我们的生活方式。而今&#xff0c;无人零售正以雷霆之势&#xff0c;颠覆传统购物模式&#xff0c;为我们带来前所未有的便捷与智能体验。想知道无人零售如何彻底改变我们的购物方式吗&#xff1f;跟随我&a…...

【图片格式转换】ICO、JPG、JPEG、PNG图片格式在线免费转换

ICO、JPG、JPEG、PNG图片格式转换 图片格式转换 https://orcc.online 支持ICO、JPG、JPEG、PNG等 主页 https://www.orcc.online 其他工具 pdf在线免费转word文档 https://orcc.online/pdf 时间戳转换 https://orcc.online/timestamp Base64 编码解码 https://orcc.onlin…...

通过自然语言处理执行特定任务的AI Agents;大模型控制NPC执行一系列的动作;个人化的电子邮件助手Panza

✨ 1: OpenAgents 通过自然语言处理执行特定任务的AI代理 OpenAgents是一个开放平台&#xff0c;旨在使语言代理&#xff08;即通过自然语言处理执行特定任务的AI代理&#xff09;的使用和托管变得更加便捷和实用。它特别适合于日常生活中对数据分析、工具插件获取和网络浏览…...

4.2 JavaScript语法

4.2.1 JavaScript大小写 在JavaScript中大小写是严格区分的&#xff0c;无论是变量、函数名称、运算符和其他语法都必须严格按照要求的大小写进行声明和使用。例如变量hello与变量HELLO会被认为是完全不同的内容。 4.2.2 JavaScript分号 很多编程语言&#xff08;例如C、Java和…...

面试二十五、remove和earse的区别

vector中erase的作用是删除掉某个位置position或一段区域&#xff08;begin, end)中的元素&#xff0c;减少其size&#xff0c;返回被删除元素下一个元素的位置。 vector中remove的作用是将范围内为val的值都remove到后面&#xff0c;返回新的_last值&#xff08;非val部分的en…...

普乐蛙元宇宙VR体验馆设备集体亮相VR文旅景区展

普乐蛙全国巡展又双叒叕开始了! 这次来到的是“好客山东”↓↓ 山东2024休闲旅游产业展 4月25日至27日&#xff0c;2024休闲旅游产业展在临沂国际博览中心举办。本次展会以“潮购文旅好品&#xff0c;乐享时尚生活”为主题&#xff0c;汇聚全国文旅产业上下游500多家企业、上万…...

北京大学-知存科技存算一体联合实验室揭牌,开启知存科技产学研融合战略新升级

5月5日&#xff0c;“北京大学-知存科技存算一体技术联合实验室”在北京大学微纳电子大厦正式揭牌&#xff0c;北京大学集成电路学院院长蔡一茂、北京大学集成电路学院副院长鲁文高及学院相关负责人、知存科技创始人兼CEO王绍迪、知存科技首席科学家郭昕婕博士及企业研发相关负…...

项目总结(一)docker总结

目录 一、引言 二、docker ------>2.1、docker介绍 ------>2.2、与虚拟机的区别 ------>2.3、Docke基本概念 ------>2.4、Docker内部结构 ------>2.5、Windows上使用docker ------>2.6、Linux上使用Docker ------>2.7、Docker常用命令 ------&g…...

深圳比创达EMC|EMC一站式解决方案:助力电子产品电磁兼容性升级

在当今电子信息技术飞速发展的时代&#xff0c;电磁兼容性&#xff08;EMC&#xff09;问题日益凸显&#xff0c;成为制约电子产品性能和质量的关键因素。为了满足市场对EMC问题的迫切需求&#xff0c;EMC一站式解决方案应运而生&#xff0c;成为解决EMC问题的有效途径。 一、…...

万兆以太网MAC设计(11)完整UDP协议栈仿真

文章目录 前言一、模块接口二、IP模块与ARP模块之间的联系三、整体协议栈仿真总结&#xff1a; 前言 目前除了巨帧处理逻辑之外&#xff0c;所有的准备工作都已经结束了&#xff0c;先进行整体的功能验证。 一、模块接口 所有模块接口皆采用AXIS数据流的形式&#xff0c;其中…...

【牛客】【模板】差分

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 差分模板。 b[0]a[0]; b[1]a[1]-a[0]; b[2]a[2]-a[1]; ...... b[n-1]a[n-1]-a[n-2]; b[n]a[n]-a[n-1]; 差分标记&#xff1a;b[l]k,b…...

鸿蒙内核源码分析(中断管理篇) | 江湖从此不再怕中断

关于中断部分系列篇将用三篇详细说明整个过程. 中断概念篇 中断概念很多&#xff0c;比如中断控制器&#xff0c;中断源&#xff0c;中断向量&#xff0c;中断共享&#xff0c;中断处理程序等等.本篇做一次整理.先了解透概念才好理解中断过程.用海公公打比方说明白中断各个概念…...

php使用rabbitmq

这里使用的是 php-amqplib composer require php-amqplib/php-amqplib生产端send.php <?phprequire_once "./vendor/autoload.php";use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage;//交换机名称 $exc_name exchange.can…...

前端发起网络请求的几种常见方式(XMLHttpRequest、FetchApi、jQueryAjax、Axios)

摘要 前端发起网络请求的几种常见方式包括&#xff1a; XMLHttpRequest (XHR)&#xff1a; 这是最传统和最常见的方式之一。它允许客户端与服务器进行异步通信。XHR API 提供了一个在后台发送 HTTP 请求和接收响应的机制&#xff0c;使得页面能够在不刷新的情况下更新部分内容…...

通过氧气退火增强β-Ga₂O₃二极管.中国科技大学和河北半导体研究所的研究人员在这一特定领域取得了最新重大进展

上图所示&#xff1a;&#xff08;a&#xff09;增加台面有助于提高β-Ga2O3肖特基势垒二极管的阻断电压&#xff08;b&#xff09;。 氧气退火和自对准台面终端使β-Ga2O3二极管进一步走向商业化。 虽然β-Ga2O3电力电子技术已经取得了长足的进步&#xff0c;但仍然存在挑战&…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...