【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…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
