【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…...

中职网络安全wire0077数据包分析
从靶机服务器的FTP上下载wire0077.pcap,分析该文件,找出黑客入侵使用的协议,提交协议名称 SMTP 分析该文件,找出黑客入侵获取的zip压缩包,提交压缩包文件名 DESKTOP-M1JC4XX_2020_09_24_22_43_12.zip 分析该文件&…...

引领未来:在【PyCharm】中利用【机器学习】与【支持向量机】实现高效【图像识别】
目录 一、数据准备 1. 获取数据集 2. 数据可视化 3. 数据清洗 二、特征提取 1. 数据标准化 2. 图像增强 三、模型训练 1. 划分训练集和测试集 2. 训练 SVM 模型 3. 参数调优 四、模型评估 1. 评估模型性能 2. 可视化结果 五、预测新图像 1. 加载和预处理新图像…...

240707-Sphinx配置Pydata-Sphinx-Theme
Step A. 最终效果 Step B. 为什么选择Pydata-Sphinx-Theme主题 Gallery of sites using this theme — PyData Theme 0.15.4 documentation Step 1. 创建并激活Conda环境 conda create -n rtd_pydata python3.10 conda activate rtd_pydataStep 2. 安装默认的工具包 pip in…...

华为如何做成数字化转型?
目录 企业数字化转型是什么? 华为如何定义数字化转型? 为什么做数字化转型? 怎么做数字化转型? 华为IPD的最佳实践之“金蝶云” 企业数字化转型是什么? 先看一下案例,华为经历了多次战略转型…...

Python | Leetcode Python题解之第229题多数元素II
题目: 题解: class Solution:def majorityElement(self, nums: List[int]) -> List[int]:cnt {}ans []for v in nums:if v in cnt:cnt[v] 1else:cnt[v] 1for item in cnt.keys():if cnt[item] > len(nums)//3:ans.append(item)return ans...

TCP/IP模型和OSI模型的区别(面试题)
OSI模型,是国际标准化组织ISO制定的用于计算机或通讯系统间互联的标准化体系,主要分为7个层级: 物理层数据链路层网络层传输层会话层表示层应用层 虽然OSI模型在理论上更全面,但是在实际网络通讯中,TCP/IP模型更加实…...

UML建模工具Draw.io简介
新书速览|《UML 2.5基础、建模与设计实践 Draw.io是一个非常出色的免费、开源、简洁、方便的绘图软件,利用这款软件可以绘制出生动有趣的图形,包括流程图、地图、网络架构图、UML用例图、流程图等。它支持各种快捷键,免费提供了1000多张画图…...

qt udp 协议 详解
1.qt udp 协议链接举例 在Qt框架中,使用UDP协议进行通信主要依赖于QUdpSocket类。以下是一个基于Qt的UDP通信示例,包括UDP套接字的创建、绑定端口、发送和接收数据报的步骤。 1. 创建UDP套接字 首先,需要创建一个QUdpSocket对象。这通常在…...

ubuntu 换源
sudo apt update 错误如下 Ign:1 http://security.ubuntu.com/ubuntu focal-security InRelease Ign:2 http://us.archive.ubuntu.com/ubuntu focal InRelease Err:3 http://security.ubuntu.com/ubuntu focal-security Release SECURITY: URL redirect target…...

基于ssm的图书管理系统的设计与实现
摘 要 在当今信息技术日新月异的时代背景下,图书管理领域正经历着深刻的变革,传统的管理模式已难以适应现代社会的快节奏和高要求,逐渐向数字化、智能化的方向演进。本论文聚焦于这一转变趋势,致力于设计并成功实现一个基于 SSM&…...