六、算术运算符学习笔记

六、算术运算符学习笔记

2026-02-19
Python基础
type
Post
status
Published
date
Feb 19, 2026
slug
python-arithmetic-operators-notes-6
summary
算术运算符是编程中最基础也最常用的部分!刚开始我以为就是简单的加减乘除,没想到里面门道这么多——特别是 /// 的区别、浮点数精度问题、还有运算符优先级,都是容易踩坑的地方。尤其是 0.1 + 0.2 != 0.3 这个问题
tags
Python数据的存储与运算
category
Python基础
icon
password
💡 学习感悟:算术运算符是编程中最基础也最常用的部分!刚开始我以为就是简单的加减乘除,没想到里面门道这么多——特别是 /// 的区别、浮点数精度问题、还有运算符优先级,都是容易踩坑的地方。尤其是 0.1 + 0.2 != 0.3 这个问题。

1. 什么是运算符?

我的理解

程序的核心功能之一是处理数据,而运算符就是用来对数据进行操作的符号。算术运算符专门用于数学计算,让程序能够执行加减乘除等运算。
📝 我的理解:运算符就像是数学符号的编程版本——+-*/ 这些符号和数学课上学的意思一样,但在编程里它们会告诉计算机具体怎么计算。

2. 算术运算符

2.1 基本算术运算符

运算符
名称
描述
示例
结果
+
加法
两数相加
5 + 3
8
-
减法
两数相减
5 - 3
2
*
乘法
两数相乘
5 * 3
15
/
除法
两数相除(结果为浮点数)
4 / 2
2.0
📝 我的理解:Python 3 中 / 总是返回浮点数,即使能整除。这是为了避免整数除法带来的精度丢失问题。刚开始我还奇怪为什么 10 / 2 结果是 5.0 而不是 5,现在明白了这是为了保证计算结果的一致性。

2.2 浮点数精度问题 ⚠️

为什么浮点数计算会有精度损失?

计算机底层使用二进制存储数据,而某些十进制小数(如 0.1)在二进制中是无限循环小数,无法精确表示。这导致浮点数运算可能出现微小的精度误差。
📝 我的理解:这个精度问题不是 Python 的 bug,而是计算机底层存储浮点数的原理导致的!就像 1/3 在十进制中是 0.333... 无限循环一样,0.1 在二进制中也是无限循环的,计算机只能存储近似值。

如何解决浮点数精度问题?

方法 1:使用 round() 函数四舍五入
方法 2:使用 decimal 模块(高精度计算)
方法 3:使用整数代替浮点数(货币计算)
⚠️ 踩坑记录:比较浮点数时,不要直接用 ==,应判断差值是否小于某个极小值!

2.3 整除运算符 //

为什么需要整除?

有时候我们只需要商的整数部分(如计算页数、分组数量),这时就需要整除。
运算符
名称
描述
示例
结果
//
整除
两数相除,取整数部分
5 // 2
2
📝 我的理解//向下取整的除法,不管小数部分是多少,都舍去取整数。负数整除时要注意,-10 // 3 结果是 -4 而不是 -3,因为是向负无穷取整。

2.4 取余运算符 %

为什么需要取余?

取余运算在编程中非常实用:判断奇偶、循环周期、时间计算等场景都需要用到。
运算符
名称
描述
示例
结果
%
取余
两数相除,取余数
5 % 2
1
📝 我的理解% 取余运算符超级实用!判断奇偶是最常见的用法——num % 2 == 0 就是偶数。还可以用来控制循环的周期,比如每 5 个换一行。

2.5 幂运算符 **

为什么需要幂运算?

计算平方、立方、指数增长等场景需要幂运算。
运算符
名称
描述
示例
结果
**
幂运算
计算一个数的幂
2 ** 3
8
📝 我的理解** 是幂运算符,2 ** 3 就是 2 的 3 次方。有趣的是,** 0.5 可以开平方根!这是因为平方根就是 0.5 次方。数学知识在编程里也能用上~

3. 运算符优先级

为什么需要优先级?

当表达式中有多个运算符时,需要知道哪个先计算、哪个后计算,否则会得到错误的结果。

3.1 优先级规则(从高到低)

优先级
运算符
描述
1
()
括号(最高优先级)
2
**
幂运算
3
* / // %
乘、除、整除、取余
4
+ -
加、减
📝 我的理解:运算符优先级和数学课上学的差不多——先乘除后加减,括号最优先。幂运算 ** 优先级比乘除还高!不确定的时候就加括号,代码更清晰。

3.2 记忆口诀

括号 > 幂 > 乘除 > 加减

4. 复合赋值运算符

为什么需要复合赋值运算符?

当需要对变量自身进行运算时,复合赋值运算符可以让代码更简洁。
运算符
等价写法
描述
+=
a = a + b
加后赋值
-=
a = a - b
减后赋值
*=
a = a * b
乘后赋值
/=
a = a / b
除后赋值
//=
a = a // b
整除后赋值
%=
a = a % b
取余后赋值
**=
a = a ** b
幂运算后赋值
📝 我的理解:复合赋值运算符就像是快捷方式——a += 5a = a + 5 少写了一个 a,看起来更简洁。在循环中累加、计数时特别方便!

5. 实际应用案例

5.1 计算器程序

📝 我的理解:这个计算器展示了所有算术运算符的用法。注意除法结果用 :.2f 格式化为 2 位小数,这样输出更美观。

5.2 时间转换

📝 我的理解:时间转换是 //% 的经典应用场景。// 3600 得到小时数,% 3600 得到剩余的秒数,再 // 60 得到分钟数,最后 % 60 得到秒数。

5.3 数字拆分

📝 我的理解:数字拆分用到了整除和取余的组合。// 100 得到百位,% 100 去掉百位得到后两位,再 // 10% 10 分别得到十位和个位。这种技巧在处理数字时很有用!

6. 遇到的问题和解决

6.1 整数除法和浮点数除法混淆

⚠️ 踩坑记录:刚开始我总是混淆 ///。记住:/ 总是返回浮点数,// 返回整数。如果需要整数结果,一定要用 //

6.2 除零错误

⚠️ 踩坑记录:除零错误是运行时错误,程序会直接崩溃!在写除法运算前,一定要检查除数是否为 0,特别是当除数来自用户输入时。

6.3 运算符优先级错误

⚠️ 踩坑记录:计算平均值时,我一开始没加括号,结果只除了最后一个数!因为除法优先级比加法高。记住:不确定优先级时,加括号总是安全的

6.4 浮点数直接比较

⚠️ 踩坑记录0.1 + 0.2 != 0.3 这个问题让我困惑了好久!现在我知道了,浮点数比较要用 abs(a - b) < 极小值,而不是直接用 ==

7. 核心知识点整理

7.1 算术运算符速查表

运算符
含义
示例
结果类型
+
加法
5 + 3
数字
-
减法
5 - 3
数字
*
乘法
5 * 3
数字
/
除法(浮点结果)
5 / 2
浮点数
//
整除(向下取整)
5 // 2
整数
%
取余
5 % 2
整数
**
幂运算
2 ** 3
数字

7.2 运算符优先级

括号 > 幂 ** > 乘除 * / // % > 加减 + -
同级运算符从左到右计算。

7.3 常见错误总结

错误类型
错误示例
正确写法
期望整数但用 /
10 / 3
10 // 3
除零
10 / 0
先检查 if b != 0
优先级错误
80 + 90 + 85 / 3
(80 + 90 + 85) / 3
浮点数直接比较
0.1 + 0.2 == 0.3
abs(a - b) < 1e-9

7.4 需要特别注意的

  • 需要整数结果时用 //,需要浮点数结果时用 /
  • 比较浮点数时用 abs(a - b) < 极小值
  • 不确定优先级时,加括号让代码更清晰
  • 除法前先检查除数是否为 0
  • 货币计算用整数(分)代替浮点数(元)
推荐云服务

雨云 - 云服务器首选

稳定 · 高速 · 性价比超高

使用优惠码立享折扣,开启你的云端之旅~

一元试用秒级开通24h在线客服

优惠码

zqf
立即访问
Loading...
灵心小窝

灵心小窝

这里不是一个喧闹的地方,只是用来存放一些还不想遗忘的东西。

声明 © 2026 早清风
加载中...