【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…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
