03-数字型
上一篇,我们主要学了 Python 的各种基础数据类型和数据类型所拥有的特点,接下来从数字型开始,将一步步的深入到每个数据类型当中。讲解每个数据类型的创建和使用。
在上一篇内容中,我们介绍了 Python 中的各种基础数据类型及其特点。接下来,我们将从数字类型开始,逐步深入讲解每种数据类型的创建与使用。
1. 数字型的特点
对于 Python 当中,数字类型只分为两种:整数和小数,分别对应的关键词函数:int()
、float()
。接下来,我们要看的是数字型在 Python 当中所拥有的特点。
在 Python 中,数字类型主要分为两种:整数和浮点数(小数),分别对应的关键函数为 int()
和 float()
。接下来,我们将探讨数字类型在 Python 中的特点。

接下来,我们来编写代码具体探究一下,数字型在 Python 中所拥有的特点:
接下来,让我们通过编写代码,深入探讨 Python 中数字类型的特点,下面的代码推荐使用 IPython 来实现编写,为了更好的测试效果。
在你电脑的终端执行如下命令来安装 IPython:
pip install ipython
上面命令安装完成后,输入 ipython 即可启动:
(base) ➜ ~ ipython
Python 3.11.5 (main, Sep 11 2023, 08:31:25) [Clang 14.0.6 ]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.25.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]:
接下来,你就可以编写和运行如下代码,注意在每次运行之前,请务必先让自己的大脑思考一下,会输出什么结果,然后再运行验证,这样的学习效果最好。
接下来,你可以编写并运行以下代码。请务必在每次运行之前,先独立思考一下代码会输出什么结果,然后再运行验证。这样学习效果最佳。
In [2]: 1 + 1
Out[2]: 2
In [3]: 1 + 1.0
Out[3]: 2.0
In [4]: 2 - 1
Out[4]: 1
In [5]: 2 - 1.0
Out[5]: 1.0
In [6]: 2 * 1
Out[6]: 2
In [7]: 2 * 1.0
Out[7]: 2.0
In [8]: 2 * 1
Out[8]: 2
In [9]: 9 / 3
Out[9]: 3.0
观察上面的所有代码和相对应的运行结果可知:
结论1:如果其中有一个元素是浮点数,结果就会得到浮点数(优先级最高)
结论2:除法涉及精度问题,所以最后的结果类型:就是浮点数
对于结论1在所有运算中,对于结果类型影响度算是最高的。为什么这么讲呢?举个例子:9 // 2 在 Python 中运行结果为:4,但如果 9 // 2 中有任何一个数字是浮点数,那么区取整的结果就会是浮点数。比如:9.0 // 2 or 9 // 2.0 结果都会得到 4.0,你可以自行编写代码运行验证。
在所有运算中,结论1对结果类型的影响最大。为什么这么说呢?举个例子:在 Python 中,9 // 2
的结果是 4
,但如果 9 // 2
中任意一个数字是浮点数,取整的结果就会是浮点数。例如,9.0 // 2
或 9 // 2.0
的结果都是 4.0
。你可以自行编写代码验证。
相对于结论2,只有在出现除法操作时才会得到浮点数类型。
与结论2相比,只有在执行除法操作时才会得到浮点数类型。
使用了上面的 IPython 运行代码之后,你或许会有一个问题:为什么要使用 IPython 来编写上面的代码,而不是继续使用 PyCharm 来编写。你可以直接观察下图3-1:

通过图 3-1 可知,左边 IPython 明显比右边 PyCharm 的直观,左边上面代码下面对应输出。右边则需要统一编写代码,统一运行后观察下方的输出结果。如果这时,其中某一行运行没有结果,你在 PyCharm 中就需要一行行的运行,而如果是在 IPython 中则非常直观有无输出和观察整体规律。
通过图 3-1 可知,与右侧的 PyCharm 相比,左侧的 IPython 显然更加直观。在 IPython 中,代码位于上方,下面直接显示对应的输出。而在 PyCharm 中,需要将代码统一编写后一起运行,然后在下方查看输出结果。如果此时某一行代码没有产生结果,你在 PyCharm 中就需要逐行核对是否有运行(也就是每行代码在 PyCharm 下方对应的输出结果)。就算都运行,还得一行一行的上下对应查找规律总结,无疑在间接的增加我们的学习成本和难度;但在 IPython 中,可以非常直观地看到每一行是否有输出,便于观察整体规律。
(但 IPython 存储代码没有 Pycharm 方便。)
当你在日后要研究或测试小范围代码时,IPython 是不可多得的好方法,可以列入你的待选项中。
通过图 3-1 可知,左边的 IPython 显然比右边的 PyCharm 更直观。IPython 将代码显示在上方,输出紧接着在下方显示。而在 PyCharm 中,代码需要集中编写,运行后再查看下方的输出结果。如果某一行代码没有输出,PyCharm 中可能需要逐行运行以检查问题;而在 IPython 中,每行代码的输出结果一目了然,更方便观察整体运行规律。
2. 算术运算符
算术运算符: 用于算术计算,这个很简单所以直接观看一下自行编写例子即可。
运算符 | 描述 | 例子 |
---|---|---|
+ | 加法运算符 | 1 + 1 = 2 |
- | 减法运算符 | 2 - 1 = 1 |
* | 乘法运算符 | 2 * 3 = 6 |
/ | 除法运算符 | 9 / 3 = 3.0 |
** | 指数运算符 | 2 ** 3 = 8 |
% | 取余运算符,计算余数 | 9 % 2 = 1 |
// | 除法取整运算符,计算商并去除其小数部分 | 9 // 2 = 4 |
tips: 9 / 2 = 4......1
3. 小试牛刀:生成新数字
假设你有一个两位的整数,我们需要通过以下规则产生两个新的数字:
给定一个两位整数,按照以下规则生成两个新数字:
- Q1:第一个新数字是原整数的十位数字和个位数字之和;
- Q2:第二个新数字是原整数的数字反转(如原整数为
21
,反转后为12
);
请你编写 Python 代码,输出这两个新数字。
给定如下初始化代码:
num = 92
输出示例:
Q1: 11
Q2: 29
更多的示例:
示例1:当 num = 91
,输出:
Q1: 10
Q2: 19
示例2:当 num = 26
,输出:
Q1: 8
Q2: 62
示例3:当 num = 18
,输出:
Q1: 9
Q2: 81
好好思考一下,上面的题目。上面的题目,没有涉及超纲的知识点,全部都是到现在为止学过的知识点。
好好思考一下,以上的题目并没有超出你所学的范围,所有的知识点都是我们到目前为止已经学过的内容。有些学员会如下写:
num = 92 # 初始化数字
# 计算 Q1 和 Q2
Q1 = num // 10 + num % 10
Q2 = num % 10 * 10 + num // 10
# 输出结果
print("Q1:", Q1)
print(f"Q2:", Q2)
上面的代码有什么问题呢?是正确实现了,但是重复计算了两次各位和十位的值。有点浪费资源,可以把结果赋值到变量,便于后期使用。如同我们做研究、实验一样,结果要可以复用。改进代码如下:
num = 92 # 初始化数字
# 提取十位和个位数字
tens = num // 10
ones = num % 10
# 计算 Q1 和 Q2
Q1 = tens + ones
Q2 = ones * 10 + tens
# 输出结果
print("Q1:", Q1)
print(f"Q2:", Q2)
4. 比较运算符:比较值的大小
对于比较运算符,你只需要知道运行结果会得到布尔类型即可。
运算符 | 描述 | 例子 |
---|---|---|
> | 判断第一个运算对象是否大于第二个运算对象 | print(1 > 2) |
< | 判断第一个运算对象是否小于第二个运算对象 | print(1 < 2) |
>= | 判断第一个运算对象是否大于或等于第二个运算对象 | print(3 >= 3) |
<= | 判断第一个运算对象是否小于或等于第二个运算对象 | print(3 <= 4) |
== | 判断两个运算对象是否相同 | print(2 == 2) |
!= | 判断两个运算对象是否不相同 | print(2 != 1) |
试一试上面的例子,看看会输出什么样的结果。
我想你会直接机械式的照着上面的代码敲打一遍,然后不假思索的直接运行。但是请注意,这里我更推荐的方式:你自己在代码的右侧手动添加注释,注释内容则是:思考会输出什么?在每一行代码都编写上相应的输出后,再运行这才是最好的时机。
在当下 AI 让我们获取答案的难度降低了,也使答案变得廉价了,随着答案变得廉价,提出正确的问题和拥有正确的思维方式变得更有价值。我们更加需要的是有意识的去训练自身如何思考。
我猜你可能会直接按照上面的代码逐字输入,然后毫不犹豫地运行它。然而,我更建议你这样做:在输入代码的同时,试着在每一行右侧手动添加注释,思考每一行会输出什么。等你为每一行编写了合理的预期输出之后,再去运行代码才是最合适的时机。
在当今 AI 技术的帮助下,我们获取答案变得更加轻松,但也因此使答案显得更加廉价。在这种情况下,提出正确的问题和培养正确的思维方式显得尤为重要。我们需要有意识地训练自己的思维,学会如何思考,而不仅仅是追求现成的答案。
print(1 > 2)
print(1 < 2)
print(3 >= 3)
print(3 <= 4)
print(2 == 2)
print(2 != 1)
# ---output---
False
True
True
True
True
True
5. 赋值运算符
接下来是 Python 的运算符,直接查看下表格:
运算符 | 描述 | 例子 |
---|---|---|
= | 把右侧的运算对象赋值给左侧的运算对象 | a = 1 |
+= | a += b 等同于 a = a + b | a += 10 |
-= | a -= b 等同于 a = a - b | a -= 10 |
*= | a *= b 等同于 a = a * b | a *= 10 |
/= | a /= b 等同于 a = a / b | a /= 10 |
**= | a **= b 等同于 a = a ** b | a **= 10 |
//= | a //= b 等同于 a = a // b | a //= 10 |
%= | a %= b 等同于 a = a % b |
具体的原理你可以参考下面的代码。通常情况下,我们对一个数字进行加法运算时,会编写如下代码:
# 常规形式
a = 1
a = a + 10
print(a) # 输出 11
我们也可以使用赋值运算符,以下代码与上面的效果是等价的:
a = 1
a += 10 # 相当于 a = a + 10, 现在 a 的值变成了 11
print(a) # 输出 11
在上面代码中,a += 10
实际上是先执行 a + 10
,然后将结果重新赋给 a
,这就改变了 a
的值。
现在你可以编写表格中例子的代码,和前面讲的类似先思考再运行验证自身所思所想:
a = 1
a += 10
a -= 10
a *= 10
a /= 10
a **= 10
a //= 10
print(a) # 输出 0.0
6. 为什么需要赋值运算符?
从上面学习后,你应该会疑惑:为什么有了基础运算符之后还有赋值运算符?
- 基础运算符:这些运算符通常不会直接修改操作数本身,而是返回一个新的结果。
- 赋值运算符用于将某个值赋给变量。最常见的赋值运算符是
=
,但还有一些复合赋值运算符(如+=
、-=
、*=
等),它们结合了基础运算符和赋值的功能。
赋值运算符的引入是为了简化代码,提高代码的可读性和可维护性。假设没有 +=
这样的运算符,我们需要写 a = a + 10
这种形式。如果频繁使用类似的操作,代码就会变得冗长。赋值运算符能让表达式更简洁,降低出错概率。
总结一下,基础运算符用于执行数学运算,而赋值运算符用于在执行运算的同时将结果赋值给变量。这两种运算符各有其用武之地,帮助我们编写更简洁、可读性更高的代码。
7. 小试牛刀
下面程序输出上面结果?
x = 4.5
y = 2
print(x // y)
上面的代码运行后,输出结果为 2.0,可以好好思考一下为什么?是本篇讲过的知识点噢!
——上面的代码中虽然是取整,但其中变量 x 是浮点数,所以最终是浮点数。
更新日志
92f62
-于f6981
-于1be89
-于87164
-于1c35a
-于074dc
-于84d67
-于ebc5f
-于1d7ae
-于6a229
-于8f937
-于99a45
-于aec71
-于326d6
-于b528c
-于465fb
-于aab79
-于49641
-于c9a5e
-于d19ea
-于68002
-于d6a72
-于a35f4
-于edb3c
-于0a35f
-于c521d
-于4047e
-于49951
-于b6e3d
-于2251a
-于92284
-于eb08b
-于97433
-于5f3bd
-于50536
-于84c78
-于10cd2
-于d8860
-于85a36
-于db1c6
-于79941
-于a3137
-于b4b9f
-于9ec04
-于b05f4
-于430d3
-于c49a9
-于16372
-于d8026
-于299dc
-于