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.3333333333333335

result = a // b  # 返回整数结果
print(result)  # 输出:3

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

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

a = -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("不能考取驾照")

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

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

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

相关文章

55. 【Android教程】位图:Bitmap

在上一节学习 Drawable 图像资源的时候我们在很多地方用到了 bitmap&#xff0c;bitmap 其实就是真实图片在 Android 中最直接的表现形式&#xff0c;这一节我们来仔细学习一下 Bitmap 的使用。 1. 什么是 Bitmap Bitmap 在 Android 中对应一张图片文件&#xff0c;它是一个二…

使用IIS部署Vue项目

前提 使用IIS部署Vue项目&#xff0c;后端必须跨域&#xff0c;不要在Vue中用proxy跨域&#xff0c;那个只在dev环境中有用&#xff01; IIS安装&#xff0c;不用全部打勾&#xff0c;有些他默认就是方块 ■ 选择性安装的&#xff0c;就维持原样就可以。 添加网站配置 右键…

nginx模型设计和进程讲解

一. Nginx进程模型解析 1. master主进程 和 worker工作进程 [rootlocalhost sbin]# ps -ef|grep nginx root 15411 1 0 21:08 ? 00:00:00 nginx: master process ./nginx nobody 15412 15411 0 21:08 ? 00:00:00 nginx: worker process root…

通过颜色学习css

文章目录 1.生成html2.添加css链接3.将h1标签text-align元素4.添加div标签4.1、为类marker添加元素4.2、添加两个新的div标签4.3、修改div标签的类型并修改css元素4.4、为类container添加元素4.5、以数字形式添加颜色4.5、container添加padding属性4.6、组合css中的颜色属性4.7…

python abs函数怎么用

abs()函数是Python的数字函数&#xff0c;用以返回数字的绝对值。 语法 以下是 abs() 方法的语法&#xff1a; abs( x ) 参数 x -- 数值表达式&#xff0c;可以是整数&#xff0c;浮点数&#xff0c;复数。 返回值 函数返回 x&#xff08;数字&#xff09;的绝对值&#x…

【自然语言处理】seq2seq模型——机器翻译

seq2seq模型——机器翻译 1 任务目标 1.1 案例简介 seq2seq是神经机器翻译的主流框架&#xff0c;如今的商用机器翻译系统大多都基于其构建&#xff0c;在本案例中&#xff0c;我们将使用由NIST提供的中英文本数据训练一个简单的中英翻译系统&#xff0c;在实践中学习seq2se…

uniapp文本框上下滚动问题

一个基本需求&#xff0c;textarea标签没有办法通过手拖动的方式进行滚动&#xff0c;当文字超出其容量后&#xff0c;想要编辑上面被遮挡部分的文字这边难以点到&#xff0c;电脑可以鼠标滚轮&#xff0c;但手机需要拖动但无效&#xff1a; 下面提供了我的解决思路&#xff1a…

list的模拟实现

目录 1.默认成员函数模拟实现 1.1 构造函数&#xff08;头节点&#xff09; 1.2 析构函数 1.3 拷贝构造函数 1.4 赋值重载函数 2.增删查改模拟实现 2.1 insert 2.2 erase 2.3 push_back、pop 3.前置、--、后置、-- 3.1前置&#xff1a; 3.2后置&#xff1a; 3.3 …

STC89C52驱动XPT2046AD转换

目录 简介封装接线&#xff08;单端&#xff09;时序以及命令字SPI时序命令字 程序XPT2046.CXPT2046.hmain.c测试 简介 XPT2046是一款4线电阻式触摸屏控制器&#xff0c;采用12位125 kHz采样SAR类型A / D转换器。XPT2046工作电压低至2.2V&#xff0c;支持1.5V至VCC的数字I/O接…

休斯《公共管理导论》第5版/考研真题解析/章节题库

第一部分 考研真题精选 一、概念题二、简答题三、论述题四、案例分析题第二部分 章节题库 第1章 一个变革的时代第2章 政府的角色第3章 传统的公共行政模式第4章 公共管理第5章 公共政策第6章 治 理第7章 问 责第8章 利害关系人和外部环境第9章 管制、外包和公共企…

jenkins目录下的vue3项目——pnpm install后运行报错——奇葩问题解决

昨天到今天&#xff0c;同事那边遇到一个问题&#xff0c;就是关于vue3vite的项目&#xff0c;在执行了自动打包后&#xff0c;运行代码会提示报错的问题。 报错信息如下&#xff1a; 具体错误信息如下&#xff1a; ERROR 11:28:14 [vite] Pre-transform error: Cannot find …

Xshell连接提示“SSH服务器拒绝了密码”

原因1&#xff1a;数字锁没有打开 没有打开NumLock&#xff08;数字小键盘上面有一个【Num】按键&#xff09;&#xff0c;需要按键开启。 注意要检查NumLock灯是否亮起。 或者改成用字母键上面的数字键输入就好了。 原因2&#xff1a;root密码设置错误&#xff08;这个是比较常…

frp内网穿透服务搭建与使用

frp内网穿透服务搭建与使用 1、frp简介 frp 是一个专注于内网穿透的高性能的反向代理应用&#xff0c;支持 TCP、UDP、HTTP、HTTPS 等多种协议。 可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。frp工作原理 服务端运行&#xff0c;监听一个主端口…

深入Django:用户认证与权限控制实战指南

title: 深入Django&#xff1a;用户认证与权限控制实战指南 date: 2024/5/7 18:50:33 updated: 2024/5/7 18:50:33 categories: 后端开发 tags: AuthDecoratorsPermissionsGuardianRESTAuthSessionMgmtMFA 第1章&#xff1a;入门Django与设置 1.1 Django安装与环境配置 在…

netty 高性能架构设计--零拷贝

文章目录 前言一、直接内存1.1 什么是直接内存1.2 代码实现1.3 使用直接内存的优缺点 二、netty 零拷贝设计2.1 netty 直接内存2.2 netty 内存池 三、零拷贝的两种方式 前言 本篇从源码层面剖析 netty 高性能架构设计之零拷贝&#xff0c;并且扩展讲述零拷贝的两种实现方式。 …

并发编程之阻塞队列BlockingQueue实战及其原理分析

1. 阻塞队列介绍 1.1 队列 是限定在一端进行插入&#xff0c;另一端进行删除的特殊线性表。 先进先出(FIFO)线性表。 允许出队的一端称为队头&#xff0c;允许入队的一端称为队尾。

机器学习第二天(监督学习,无监督学习,强化学习,混合学习)

1.是什么 基于数据寻找规律从而建立关系&#xff0c;进行升级&#xff0c;如果是以前的固定算式那就是符号学习了 2.基本框架 3.监督学习和无监督式学习&#xff1a; 监督学习&#xff1a;根据正确结果进行数据的训练&#xff1b; 在监督式学习中&#xff0c;训练数据包括输…

简易录制视频做3D高斯

系统环境 ubuntu20 &#xff0c;cuda11.8&#xff0c;anaconda配置好了3D高斯的环境。 具体参考3D高斯环境配置&#xff1a;https://blog.csdn.net/Son_of_the_Bronx/article/details/138527329?spm1001.2014.3001.5501 colmap安装&#xff1a;https://blog.csdn.net/Son_of…

W801学习笔记二十一:英语背单词学习应用——上

英语背单词是比较常见的学习APP&#xff0c;参考唐诗宋词应用&#xff0c;本章做一个类似的应用。 一、单词数据清洗及格式转换 诗词数据的获取渠道很多&#xff0c;一般可以按照年级来分文件。如一到九年级&#xff0c;四六级&#xff0c;雅思等等。 1、先从网上某某地方下载…

硬件设计细节1-缓冲驱动器使用注意事项

目录 一、缓冲驱动器二、实例分析1.硬件结构2.问题描述3.原因分析4.原因定位 三、结论 一、缓冲驱动器 缓冲驱动器通常用于隔离、电平转换等应用场景。在使用时&#xff0c;需要关注的点较多&#xff0c;如电平范围、频率范围、延时、控制方式、方向以及输入输出状态。通常&am…
最新文章