入门 Python 语言:运算符与表达式
目录
✨前言✨
本系列文章目的在于将 Python 的基础内容完全夯实,最终目的是为后期的深度学习在算法上有一定的铺垫,前期在学习数学的过程中也会有很大的帮助,相对于 C++ 来说 Python 有自身的优势,文末会有 Python 的优势对比于 C++ 的维度点说明,我已经先写过 C++的基础使用 了,两种语言各自有各自的优势,我们要根据具体的需求来分析使用哪种语言更为方便,其它的语言暂时不在考虑范畴之内,我们的目标是AI深度学习。
前置环境与代码结构文章:
📚本篇目标
- 让初学者了解 Python 中各类运算符的基本概念和用途。
- 掌握算术运算符、比较运算符、逻辑运算符和赋值运算符的使用方法。
- 理解运算符优先级规则,能够正确计算表达式的值。
- 通过练习题巩固所学的运算符和表达式知识,提升运用能力。
🔥重难点说明
重点
- 各类运算符的功能和使用场景,如算术运算符用于数值计算,比较运算符用于条件判断等。
- 运算符优先级的规则,这对于正确计算复杂表达式至关重要。
难点
- 逻辑运算符的短路特性,理解在何种情况下会发生短路以及如何影响表达式的计算。
- 复杂表达式中运算符优先级的正确应用,避免因优先级错误导致计算结果出错。
📖学习正文
算术运算符
算术运算符用于执行基本的数学运算,以下是常见的算术运算符及其示例:
# 加法
a = 5 + 3
print("加法结果:", a)
# 减法
b = 5 - 3
print("减法结果:", b)
# 乘法
c = 5 * 3
print("乘法结果:", c)
# 除法
d = 5 / 3
print("除法结果:", d)
# 取整除法
e = 5 // 3
print("取整除法结果:", e)
# 取模(取余)
f = 5 % 3
print("取模结果:", f)
# 幂运算
g = 5 ** 3
print("幂运算结果:", g)
执行结果:
加法结果: 8
减法结果: 2
乘法结果: 15
除法结果: 1.6666666666666667
取整除法结果: 1
取模结果: 2
幂运算结果: 125
比较运算符
比较运算符用于比较两个值的大小关系,返回布尔值(True 或 False),示例如下:
# 等于
h = 5 == 3
print("等于比较结果:", h)
# 不等于
i = 5 != 3
print("不等于比较结果:", i)
# 大于
j = 5 > 3
print("大于比较结果:", j)
# 小于
k = 5 < 3
print("小于比较结果:", k)
# 大于等于
l = 5 >= 3
print("大于等于比较结果:", l)
# 小于等于
m = 5 <= 3
print("小于等于比较结果:", m)
执行结果:
等于比较结果: False
不等于比较结果: True
大于比较结果: True
小于比较结果: False
大于等于比较结果: True
小于等于比较结果: False
逻辑运算符
逻辑运算符用于组合多个条件进行逻辑判断,常见的逻辑运算符有 and
、or
和 not
,示例如下:
# and 运算符
n = (5 > 3) and (2 < 4)
print("and 运算结果:", n)
# or 运算符
o = (5 < 3) or (2 < 4)
print("or 运算结果:", o)
# not 运算符
p = not (5 > 3)
print("not 运算结果:", p)
执行结果:
and 运算结果: True
or 运算结果: True
not 运算结果: False
赋值运算符
赋值运算符用于给变量赋值,除了基本的 =
赋值运算符外,还有复合赋值运算符,示例如下:
# 基本赋值
x = 5
print("基本赋值后 x 的值:", x)
# 加法赋值
x += 3 # 相当于 x = x + 3
print("加法赋值后 x 的值:", x)
# 减法赋值
x -= 2 # 相当于 x = x - 2
print("减法赋值后 x 的值:", x)
# 乘法赋值
x *= 2 # 相当于 x = x * 2
print("乘法赋值后 x 的值:", x)
# 除法赋值
x /= 2 # 相当于 x = x / 2
print("除法赋值后 x 的值:", x)
执行结果:
基本赋值后 x 的值: 5
加法赋值后 x 的值: 8
减法赋值后 x 的值: 6
乘法赋值后 x 的值: 12
除法赋值后 x 的值: 6.0
运算符优先级与表达式求值
Python 中的运算符有不同的优先级,在计算表达式时,优先级高的运算符先进行计算。可以使用括号来改变运算的顺序,示例如下:
# 未使用括号
q = 5 + 3 * 2
print("未使用括号的计算结果:", q)
# 使用括号
r = (5 + 3) * 2
print("使用括号的计算结果:", r)
执行结果:
未使用括号的计算结果: 11
使用括号的计算结果: 16
💻练习题
单选题-5
-
以下哪个是 Python 中的幂运算符?
A. ^
B. **
C. *
D. / -
执行
print(5 % 2)
的结果是?
A. 2
B. 2.5
C. 1
D. 0 -
对于表达式
(3 > 2) and (4 < 5)
,其结果是?
A. True
B. False
C. 3
D. 4 -
执行以下代码后,变量
a
的值是?a = 5 a *= 2
A. 5
B. 7
C. 10
D. 2 - 表达式
2 + 3 * 4
的计算结果是?
A. 20
B. 14
C. 10
D. 9
多选题-3
-
以下属于 Python 算术运算符的有?
A. +
B. -
C. <
D. % -
以下哪些是 Python 中的逻辑运算符?
A. and
B. or
C. not
D. if -
以下关于运算符优先级的说法正确的是?
A. 算术运算符优先级高于比较运算符
B. 逻辑运算符not
优先级高于and
和or
C. 赋值运算符优先级最低
D. 括号可以改变运算符的优先级
判断题-2
- 在 Python 中,
3 / 2
的结果是 1。( ) - 表达式
(5 < 3) or (True)
的结果是 True。( )
代码题-1
编写一个 Python 程序,计算 (2 + 3) * 4 / 2
的值,并将结果输出。
📝答案解析
单选题
- 答案:B
- 在 Python 中,幂运算符是
**
,所以选 B。选项 A 的^
在 Python 中是按位异或运算符;选项 C 的*
是乘法运算符;选项 D 的/
是除法运算符。
- 在 Python 中,幂运算符是
- 答案:C
%
是取模运算符,用于求余数,5 除以 2 的余数是 1,所以结果是 1,选 C。
- 答案:A
(3 > 2)
的结果是True
,(4 < 5)
的结果也是True
,and
运算符要求两边的条件都为True
时结果才为True
,所以整个表达式结果为True
,选 A。
- 答案:C
a *= 2
相当于a = a * 2
,初始a = 5
,那么a = 5 * 2 = 10
,所以选 C。
- 答案:B
- 根据运算符优先级,乘法先于加法计算,所以先算
3 * 4 = 12
,再算2 + 12 = 14
,选 B。
- 根据运算符优先级,乘法先于加法计算,所以先算
多选题
- 答案:ABD
+
、-
、%
都属于算术运算符,而<
是比较运算符,所以选 ABD。
- 答案:ABC
and
、or
、not
是 Python 中的逻辑运算符,if
是条件语句关键字,不是逻辑运算符,所以选 ABC。
- 答案:ABCD
- 算术运算符优先级高于比较运算符,逻辑运算符
not
优先级高于and
和or
,赋值运算符优先级最低,括号可以改变运算符的优先级,所以 ABCD 说法都正确。
- 算术运算符优先级高于比较运算符,逻辑运算符
判断题
- 答案:错误
- 在 Python 中,
3 / 2
是普通除法,结果是 1.5,而不是 1,所以该说法错误。
- 在 Python 中,
- 答案:正确
(5 < 3)
的结果是False
,但or
运算符只要有一个条件为True
结果就为True
,后面的True
使得整个表达式结果为True
,所以该说法正确。
代码题
result = (2 + 3) * 4 / 2
print(result)
该程序先计算括号内的 2 + 3 = 5,再计算 5 * 4 = 20,最后计算 20 / 2 = 10,并将结果 10 输出。
总结
通过本文的学习,我们详细了解了 Python 中的算术运算符、比较运算符、逻辑运算符和赋值运算符,掌握了它们的使用方法和特点。同时,我们也学习了运算符优先级的规则,能够正确计算复杂表达式的值。练习题的巩固让我们对这些知识有了更深入的理解和运用。希望大家能够熟练掌握这些运算符和表达式的知识,为进一步学习 Python 打下坚实的基础。
Python的优势对比于 C++ 的维度点说明
对比维度 | Python 优势 | C++ 情况 |
---|---|---|
性能效率 | 1. 开发效率高:代码简洁,语法灵活,能够用较少的代码实现相同的功能,缩短开发周期。 2. 有高性能库支持:对于计算密集型任务,可以使用如 NumPy、Pandas 等高性能库,它们底层使用 C 或 Fortran 实现,能在一定程度上弥补 Python 执行速度慢的问题。 | 1. 开发效率低:代码相对冗长,需要编写更多的代码来实现相同功能,开发周期较长。 2. 开发难度大:需要手动管理内存,容易出现内存泄漏等问题,对开发者要求较高。 |
底层控制能力 | 1. 代码编写简单快速:无需关注底层硬件细节,能让开发者更专注于业务逻辑的实现,快速搭建应用原型。 2. 适合快速迭代开发:在应用开发过程中,能够快速对代码进行修改和调整,适应不断变化的需求。 | 1. 代码编写复杂:需要对底层硬件有深入了解,编写代码时要处理很多底层细节,开发难度大。 2. 开发周期长:由于需要关注底层,代码的修改和调整相对困难,不适合快速迭代开发。 |
语言特性 | 1. 语法简洁易懂:代码可读性高,易于学习和上手,降低了编程门槛,适合初学者。 2. 动态类型灵活:在编写代码时无需提前声明变量类型,能够根据需要灵活赋值,提高了代码的编写效率。 | 1. 语法复杂:学习成本较高,对于初学者来说有一定难度。 2. 静态类型不够灵活:在编写代码时需要提前声明变量类型,不够灵活,修改代码时可能需要对类型进行调整。 |
可移植性 | 1. 跨平台部署方便:只要安装了相应的 Python 解释器,代码可以在不同操作系统上轻松运行,无需重新编译。 2. 云服务支持好:很多云服务平台都提供了 Python 运行环境,方便将 Python 应用部署到云端。 | 1. 跨平台编译麻烦:不同操作系统的编译器和运行时环境可能存在差异,需要针对不同平台进行编译和调试。 2. 云服务集成复杂:将 C++ 应用部署到云服务平台时,需要处理更多的底层配置和依赖问题。 |
生态系统和工具链 | 1. 库丰富且易用:拥有大量的开源库和框架,涵盖了数据分析、机器学习、Web 开发等多个领域,能够快速实现各种功能。 2. 社区活跃:有庞大的开发者社区,遇到问题可以很容易找到解决方案和技术支持。 | 1. 库学习成本高:虽然有很多专业级库,但部分库的学习曲线较陡,使用起来有一定难度。 2. 社区相对较小:相比 Python 社区,C++ 社区规模相对较小,获取技术支持和解决方案的渠道相对较少。 |
安全性和稳定性 | 1. 内置安全机制:有一些内置的安全机制,如异常处理机制,能够在程序出现错误时进行捕获和处理,避免程序崩溃。 2. 代码审查相对容易:简洁的语法和动态类型使得代码结构相对简单,在代码审查时更容易发现问题。 | 1. 手动管理易出错:手动管理内存和资源容易出现错误,如内存泄漏、悬空指针等,影响程序的稳定性和安全性。 2. 代码审查复杂:由于语法复杂,代码结构可能比较复杂,在代码审查时需要花费更多的时间和精力。 |