【Python】从基础到进阶(三):深入了解Python中的运算符与表达式


文章目录
- 一、引言
- 二、运算符
- 1. 算术运算符
- 2. 比较运算符
- 3. 逻辑运算符
- 4. 位运算符
- 5. 赋值运算符
- 6. 其他运算符
- 三、表达式
- 1. 表达式的定义
- 2. 运算符的优先级
- 3. 使用括号提升可读性
- 4. 组合运算符与复合表达式
- 四、案例:计算学生的平均成绩
- 1. 输入多个学生的成绩
- 2. 使用各种运算符计算总成绩和平均成绩
- 3. 判断学生成绩的等级
- 4. 完整案例代码
- 五、总结
- 1. 运算符的类型和用法
- 2. 表达式的构建与运算符优先级
- 3. 案例应用
- 4. 实际编程建议

一、引言
在前两篇文章中,我们已经了解了Python的基础知识,包括基本的数据类型和数据类型转换,以及基本的输入输出操作。在实际编程过程中,运算符和表达式是不可或缺的部分,它们不仅用于执行基本的算术运算,还用于比较值、进行逻辑判断和操作位等。理解并熟练使用各种运算符和表达式,将大大提高代码的可读性和编写效率。
本篇文章将深入探讨Python中的各种运算符,包括算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符以及其他一些特殊运算符。我们还将学习如何正确构建表达式,了解运算符的优先级,并通过实际案例来应用这些知识。希望通过本文的学习,您能更加全面地掌握Python编程的基础知识,为后续的进阶学习打下坚实的基础。

二、运算符
在Python编程中,运算符用于执行各种操作,如算术运算、比较值、逻辑判断和位操作等。以下是Python中常用的运算符及其功能介绍:
1. 算术运算符
算术运算符用于执行基本的数学运算。
- 加法(+):将两个操作数相加。
result = 5 + 3 # 结果是8 - 减法(-):从第一个操作数中减去第二个操作数。
result = 5 - 3 # 结果是2 - 乘法(*):将两个操作数相乘。
result = 5 * 3 # 结果是15 - 除法(/):将第一个操作数除以第二个操作数。
result = 5 / 3 # 结果是1.6666666666666667 - 取整除法(//):将第一个操作数除以第二个操作数并取整。
result = 5 // 3 # 结果是1 - 取余(%):返回第一个操作数除以第二个操作数的余数。
result = 5 % 3 # 结果是2 - 幂运算()**:返回第一个操作数的第二个操作数次幂。
result = 5 ** 3 # 结果是125
2. 比较运算符
比较运算符用于比较两个值,并返回布尔值(True或False)。
- 等于(==):检查两个操作数是否相等。
result = 5 == 3 # 结果是False - 不等于(!=):检查两个操作数是否不相等。
result = 5 != 3 # 结果是True - 大于(>):检查左操作数是否大于右操作数。
result = 5 > 3 # 结果是True - 小于(<):检查左操作数是否小于右操作数。
result = 5 < 3 # 结果是False - 大于等于(>=):检查左操作数是否大于或等于右操作数。
result = 5 >= 3 # 结果是True - 小于等于(<=):检查左操作数是否小于或等于右操作数。
result = 5 <= 3 # 结果是False
3. 逻辑运算符
逻辑运算符用于组合布尔值并返回布尔结果。
- 与(and):如果两个操作数均为True,则返回True。
result = True and False # 结果是False - 或(or):如果两个操作数中有一个为True,则返回True。
result = True or False # 结果是True - 非(not):取反操作数的布尔值。
result = not True # 结果是False
4. 位运算符
位运算符用于按位处理整数。
- 按位与(&):对两个操作数进行按位与操作。
result = 5 & 3 # 结果是1 - 按位或(|):对两个操作数进行按位或操作。
result = 5 | 3 # 结果是7 - 按位异或(^):对两个操作数进行按位异或操作。
result = 5 ^ 3 # 结果是6 - 按位取反(~):对操作数进行按位取反操作。
result = ~5 # 结果是-6 - 左移(<<):将操作数的位左移指定的位数。
result = 5 << 1 # 结果是10 - 右移(>>):将操作数的位右移指定的位数。
result = 5 >> 1 # 结果是2
5. 赋值运算符
赋值运算符用于给变量赋值。
- 赋值(=):将右操作数的值赋给左操作数。
result = 5 # 结果是5 - 加赋值(+=):将右操作数的值加到左操作数上,并赋值给左操作数。
result = 5 result += 3 # 结果是8 - 减赋值(-=):将右操作数的值从左操作数中减去,并赋值给左操作数。
result = 5 result -= 3 # 结果是2 - 乘赋值(*=):将右操作数的值乘到左操作数上,并赋值给左操作数。
result = 5 result *= 3 # 结果是15 - 除赋值(/=):将左操作数除以右操作数,并赋值给左操作数。
result = 5 result /= 3 # 结果是1.6666666666666667 - 取整除赋值(//=):将左操作数整除右操作数,并赋值给左操作数。
result = 5 result //= 3 # 结果是1 - 取余赋值(%=):将左操作数取余右操作数,并赋值给左操作数。
result = 5 result %= 3 # 结果是2 - 幂赋值(=)**:将左操作数的值进行幂运算,并赋值给左操作数。
result = 5 result **= 3 # 结果是125
6. 其他运算符
- 成员运算符(in, not in):用于检查一个值是否在序列中。
result = 3 in [1, 2, 3] # 结果是True result = 4 not in [1, 2, 3] # 结果是True - 身份运算符(is, is not):用于检查两个对象是否为同一对象。
a = [1, 2, 3] b = a result = a is b # 结果是True result = a is not b # 结果是False
三、表达式
在编程中,表达式是由运算符和操作数组合而成的结构,用于计算某个值。理解如何构建和使用表达式是掌握编程语言的重要部分。以下是关于表达式的详细介绍:
1. 表达式的定义
表达式是由变量、常量、运算符和函数调用等组成的计算结构。表达式可以是简单的单个值或变量,也可以是复杂的计算式。
# 简单表达式
a = 5# 复杂表达式
b = (a + 3) * 2 - 4 / 2
2. 运算符的优先级
在一个表达式中,不同运算符的优先级决定了它们的计算顺序。优先级高的运算符会优先计算。如果不明确运算顺序,可以使用括号来提高可读性并确保正确计算。
运算符的优先级(从高到低):
- 幂运算符()**
- 正负号(+ -)
- 乘法、除法、取整除、取余( / // %)*
- 加法、减法(+ -)
- 比较运算符(== != > < >= <=)
- 逻辑运算符(not and or)
示例:
result = 2 + 3 * 4 # 结果是14,因为乘法优先于加法
result = (2 + 3) * 4 # 结果是20,因为括号内的表达式优先计算
3. 使用括号提升可读性
在复杂表达式中,使用括号可以提高代码的可读性,并明确表达式的计算顺序。即使在某些情况下括号是多余的,也建议使用括号来让代码更清晰。
示例:
result = 2 + (3 * 4) # 括号明确了乘法先于加法
result = ((2 + 3) * 4) / 2 # 复杂表达式使用多个括号明确计算顺序
4. 组合运算符与复合表达式
组合运算符用于简化表达式的书写,如加赋值、减赋值等。这些运算符结合了基本的运算符和赋值操作。
示例:
a = 5
a += 3 # 相当于 a = a + 3
a *= 2 # 相当于 a = a * 2
复合表达式是指包含多个运算符和操作数的表达式。这些表达式需要注意运算符的优先级和使用括号来确保正确的计算结果。
示例:
result = (5 + 3) * (2 - 4 / 2) # 复杂表达式,包含多个运算符和括号
通过掌握运算符的优先级、使用括号提升可读性以及理解组合运算符的用法,可以编写更加高效和可读的代码。在下一部分,我们将通过一个具体的案例来应用这些知识。
四、案例:计算学生的平均成绩
为了更好地理解运算符和表达式的实际应用,我们将通过一个具体的案例来计算学生的平均成绩。这个案例将涉及到输入多个学生的成绩,使用各种运算符计算总成绩和平均成绩,并判断学生成绩的等级。
1. 输入多个学生的成绩
首先,我们需要从用户处获取多个学生的成绩。我们可以使用input()函数来实现这一点,并将输入的成绩存储在一个列表中。
示例代码:
# 获取学生成绩的数量
num_students = int(input("请输入学生的数量:"))# 初始化成绩列表
grades = []# 获取每个学生的成绩
for i in range(num_students):grade = float(input(f"请输入第{i + 1}个学生的成绩:"))grades.append(grade)print("所有学生的成绩:", grades)
2. 使用各种运算符计算总成绩和平均成绩
获取成绩后,我们可以使用算术运算符来计算总成绩和平均成绩。
示例代码:
# 计算总成绩
total_score = sum(grades)# 计算平均成绩
average_score = total_score / num_studentsprint("总成绩:", total_score)
print("平均成绩:", average_score)
3. 判断学生成绩的等级
根据平均成绩,我们可以判断学生的成绩等级。这里我们使用比较运算符和逻辑运算符来实现。
示例代码:
# 判断成绩等级
if average_score >= 90:grade_level = "优秀"
elif average_score >= 80:grade_level = "良好"
elif average_score >= 70:grade_level = "中等"
elif average_score >= 60:grade_level = "及格"
else:grade_level = "不及格"print("学生的平均成绩等级:", grade_level)
4. 完整案例代码
下面是完整的代码,结合了上述所有步骤:
# 获取学生成绩的数量
num_students = int(input("请输入学生的数量:"))# 初始化成绩列表
grades = []# 获取每个学生的成绩
for i in range(num_students):grade = float(input(f"请输入第{i + 1}个学生的成绩:"))grades.append(grade)# 打印所有学生的成绩
print("所有学生的成绩:", grades)# 计算总成绩
total_score = sum(grades)# 计算平均成绩
average_score = total_score / num_students# 打印总成绩和平均成绩
print("总成绩:", total_score)
print("平均成绩:", average_score)# 判断成绩等级
if average_score >= 90:grade_level = "优秀"
elif average_score >= 80:grade_level = "良好"
elif average_score >= 70:grade_level = "中等"
elif average_score >= 60:grade_level = "及格"
else:grade_level = "不及格"# 打印学生的平均成绩等级
print("学生的平均成绩等级:", grade_level)
通过这个案例,我们运用了算术运算符、比较运算符和逻辑运算符,了解了如何通过表达式来进行数据的处理和判断。这有助于我们更好地理解和应用Python中的运算符与表达式。
五、总结
在本篇文章中,我们深入探讨了Python中的各种运算符及其在表达式中的应用。通过学习这些内容,您应该能够更好地理解并应用运算符和表达式,以编写更加高效和可读的代码。以下是本篇文章的要点回顾:
1. 运算符的类型和用法
- 算术运算符:用于执行基本的数学运算,如加法、减法、乘法、除法、取整除、取余和幂运算。
- 比较运算符:用于比较两个值,并返回布尔值(True或False)。
- 逻辑运算符:用于组合布尔值,进行逻辑判断。
- 位运算符:用于按位处理整数。
- 赋值运算符:用于给变量赋值,结合了基本运算和赋值操作。
- 其他运算符:包括成员运算符和身份运算符,用于检查值在序列中的存在情况或对象是否为同一对象。
2. 表达式的构建与运算符优先级
- 表达式:由变量、常量、运算符和函数调用等组成的计算结构。
- 运算符优先级:决定了表达式中运算符的计算顺序。优先级高的运算符会优先计算。
- 使用括号提升可读性:在复杂表达式中,使用括号可以明确计算顺序,提高代码的可读性。
3. 案例应用
通过计算学生的平均成绩这一案例,我们实际应用了各种运算符,完成了从输入成绩到计算总成绩、平均成绩,并根据平均成绩判断成绩等级的过程。这不仅巩固了我们对运算符和表达式的理解,也展示了如何在实际编程中应用这些知识。
4. 实际编程建议
- 多练习:通过编写不同的代码段来练习各种运算符和表达式。
- 注重可读性:使用括号和适当的变量名来提高代码的可读性和可维护性。
- 理解优先级:牢记运算符的优先级,并在不确定时使用括号来明确计算顺序。
通过本篇文章的学习,相信您对Python中的运算符和表达式有了更深入的了解和掌握。希望这些知识能为您在编写高效、可读的代码时提供帮助。在接下来的文章中,我们将继续探讨更多Python编程中的重要概念和技术,敬请期待。
相关文章:
【Python】从基础到进阶(三):深入了解Python中的运算符与表达式
🔥 个人主页:空白诗 文章目录 一、引言二、运算符1. 算术运算符2. 比较运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 其他运算符 三、表达式1. 表达式的定义2. 运算符的优先级3. 使用括号提升可读性4. 组合运算符与复合表达式 四、案例:计…...
C#的DllImport使用方法
1. 托管代码与非托管代码 托管代码:我们编写的C#代码(也包括.net平台上的其他语言,如VB,J#等),首先经过编译器把代码编译成中间语言(IL),当方法被调用时,公共…...
人工智能算法工程师(中级)课程11-PyTorch神经网络之循环神经网络RNN与代码详解
大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程11-PyTorch神经网络之循环神经网络RNN与代码详解。循环神经网络(Recurrent Neural Network,RNN)是一种处理序列数据的神经网络。本文将详细介绍RNN网…...
服务端生成RSA密钥实例
RSA非对称加密算法的一种,这里分享一下服务端生成公钥和私钥的实例,并打印出来。 一:实例代码 package mainimport ("bufio""crypto/rand""crypto/rsa""crypto/x509""encoding/pem"&quo…...
Maven Nexus3 私服搭建、配置、项目发布指南
maven nexus私服搭建 访问nexus3官方镜像库,选择需要的版本下载:Docker Nexus docker pull sonatype/nexus3:3.49.0 创建数据目录并赋权 sudo mkdir /nexus-data && sudo chown -R 200 /nexus-data 运行(数据目录选择硬盘大的卷进行挂载) …...
东方博宜1627 - 暑期的旅游计划(2)
问题描述 期末考试结束了,小华语文、数学、英语三门功课分别考了 x、y、z 分,小华的家长说,如果小华三门功课中有一门考到 90 分或者 90 分以上,那么就去北京旅游,如果都没考到,那么就去南京玩。 请从键盘…...
FastAPI 学习之路(三十五)项目结构优化
之前我们创建的文件都是在一个目录中,但是在我们的实际开发中,肯定不能这样设计,那么我们去创建一个目录,叫models,大致如下。 主要目录是: __init__.py 是一个空文件,说明models是一个package…...
linux源码安装mysql8.0的小白教程
1.下载8.x版本的mysql MySQL :: Download MySQL Community Server (Archived Versions) 2.安装linux 我安装的是Rocky Linux8.6 3.设置ip地址,方便远程连接 使用nmcli或者nmtui设置或修改ip地址 4.使用远程连接工具MobaXterm操作: (1)将mysql8版本的压缩包上传到mybaxterm…...
如何评估独立站的外链质量?
要评估独立站的外链质量时,首先要看的不是别的,而是内容,跟你网站相关的文章内容才是最重要的,其他的一切其实都不重要。什么网站的DA,评级,网站的主要内容跟你的文章内容是否相关其实都不重要,…...
AI在编程领域的作用
AI(人工智能)在软件开发和许多其他领域都发挥着重要作用,但这并不意味着它在取代开发者。相反,AI更多地是在帮助开发者提高工作效率,解决复杂问题,并创造新的可能性。 探讨AI工具对开发者日常工作的影响 …...
医疗器械网络安全 | 漏洞扫描、渗透测试没有发现问题,是否说明我的设备是安全的?
尽管漏洞扫描、模糊测试和渗透测试在评估系统安全性方面是非常重要和有效的工具,但即使这些测试没有发现任何问题,也不能完全保证您的医疗器械是绝对安全的。这是因为安全性的评估是一个多维度、复杂且持续的过程,涉及多个方面和因素。以下是…...
【GameFramework扩展应用】6-4、GameFramework框架增加AB包加解密功能
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q764424567/article/details/1…...
通用图形处理器设计GPGPU基础与架构(二)
一、前言 本系列旨在介绍通用图形处理器设计GPGPU的基础与架构,因此在介绍GPGPU具体架构之前,需要了解GPGPU的编程模型,了解软件层面是怎么做到并行的,硬件层面又要怎么配合软件,乃至定出合适的架构来实现软硬件协同。…...
在一个使用了 Sass 的 React Webpack 项目中安装和使用 Tailwind CSS
要在一个使用了 Sass 的 React Webpack 项目中安装和使用 Tailwind CSS,可以按照以下步骤操作: 1. 安装 Tailwind CSS 及其依赖 首先,确保你的项目根目录下有 package.json 文件,然后运行以下命令来安装 Tailwind CSS 及其所需的…...
HDMI简介
本篇主要介绍HDMI常见接口以及TMDS传输技术。 文章目录 一、HDMI简介二、TMDS传输技术1.编码(encoder)2.并转串(serializer)——OSERDESE2原语3.单端转差分——OBUFDS源语 三、常见的几种信号传输方式 一、HDMI简介 HDMI(High-Definition Multimedia I…...
原作者带队,LSTM卷土重来之Vision-LSTM出世
与 DeiT 等使用 ViT 和 Vision-Mamba (Vim) 方法的模型相比,ViL 的性能更胜一筹。 AI 领域的研究者应该还记得,在 Transformer 诞生后的三年,谷歌将这一自然语言处理届的重要研究扩展到了视觉领域,也就是 Vision Transformer。后来…...
Fiddler 抓包工具抓https
Fiddler 抓包工具抓https...
详细谈谈负载均衡的startupProbe探针、livenessProbe探针、readnessProbe探针如何使用以及使用差异化
文章目录 startupProbe探针startupProbe说明示例配置参数解释 使用场景说明实例——要求: 容器在8秒内完成启动,否则杀死对应容器工作流程说明timeoutSeconds: 和 periodSeconds: 参数顺序说明 livenessProbe探针livenessProbe说明示例配置参数解释 使用…...
守望数据边界:sklearn中的离群点检测技术
守望数据边界:sklearn中的离群点检测技术 在数据分析和机器学习项目中,离群点检测是一项关键任务。离群点,又称异常值或离群点,是指那些与其他数据显著不同的观测值。这些点可能由测量误差、数据录入错误或真实的变异性造成。正确…...
python工作中遇到的坑
1. 字典拷贝 有些场景下,需要对字典拷贝一个副本。这个副本用于保存原始数据,然后原来的字典去参与其他运算,或者作为参数传递给一些函数。 例如, >>> dict_a {"name": "John", "address&q…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...
