>>> from env_helper import info; info()
页面更新时间: 2024-01-17 14:37:58
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-17-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

1.2. Python中的数值类型

计算机处理的对象有多种类型,这些类型在计算机中称为“数据类型”。 数据类型主要又分为两类,一类是数字形式的,称为“数值类型”;还有一类型是字符串。

记住,表达式是值和操作符的组合,它们可以通过求值成为单个值。 “数值类型”是一类值,每个值都只属于一种数值类型。例如,值 -230 属于“整型”值。 整型(或int)数值类型表明值是整数。 带有小数点的数,如 3.14 ,称为“浮点型”(或 float )。 请注意,尽管 42 是一个整型,但 42.0 是一个浮点型。

1.2.1. 数值类型

Python中数有四种数值类型:整数、长整数、浮点数和复数。

  • 整型, 如 1, -1, 0

  • 长整型,是比较大的整数,如 234234243324

  • 浮点型,如 1.23、3E-2

  • 复数,如 1 + 2j、 1.1 + 2.2j

>>> 2
2
>>> 3E-2
0.03

在 Python 中查看类型,使用 type() 内置函数。

>>> type(2)
int
>>> type("2")
str
>>> type(1+3j)
complex

在 Python 中支持复数表达式。复数由实数部分和虚数部分构成,可以用 a + bj ,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。 整数与浮点型数混合运算时会将整数转换为浮点数。

1.2.2. 十六进制、八进制和二进制

前面说明的都是常规的数字,都是常见的十进制数值。在大多数计算机语言中,整数除了十进制表达,一般都还有十六进制数、八进制数和二进制数的表达方式,Python也是这样。

在 Pthon 中使用 0x 开头的“数字”表示十六进制的数。对于 9 以后的数字,没有对应的阿拉伯数字。则使用 a 表示 10b 表示 11 ,依次类推,最后 f 表示 15。 在十六进制表达中不区分“字母”的大小写。

>>> 0xAF
175

注意这里,在 Jupyter 中,会对表达式进行求值,从而得到对应的 10 进制的结果。

>>> 0xaF
175

在 Python 中使用 0o 开头的数字表示八进制, 注意 0 后面是英文字母 o

>>> 0o1234
668

在八进制表达中,数字 89 不能出现:

>>> 0o129
  Cell In [10], line 1
    0o129
        ^
SyntaxError: invalid digit '9' in octal literal

0b 开关的表达式表示二进制。在二进制表达式中,只能使用数字 01

>>> 0b1011010010
722

这些表示法都以 0 打头。

1.2.3. Python 数值类型转换

有时候,我们需要对数据内置的类型进行转换,数值类型的转换,你只需要将数值类型作为函数名即可。

  • int(x)x 转换为一个整数。

  • float(x)x 转换到一个浮点数。

  • complex(x)x 转换到一个复数,实数部分为 x ,虚数部分为 0

  • complex(x, y)xy 转换到一个复数,实数部分为 x ,虚数部分为 yxy 是数字表达式。

  • long(x [,base] ) : 将 x 转换为一个长整数

  • hex(x) : 将一个整数转换为一个十六进制字符串

  • oct(x) : 将一个整数转换为一个八进制字符串

  • bin(x) : 将一个整数转换为一个二进制字符串

以下实例将浮点数变量 a 转换为整数,这个过程可能称为“取整”更合适一点。

>>> a = 3.1415926
>>> int(a)
3

转换为复数表达式。

>>> complex(a)
(3.1415926+0j)

1.2.4. 数值和表达式

计算机,最初的设计的目的就是帮助人们进行计算。在计算机语言中实现了很多数学中的计算表达方法, 这些表达方法大多数与数学表达方法一致,但也有一些不同。

Juypyter 解释器可用作功能强大的计算器。请尝试执行如下操作:

>>> 2 + 2
4

结果应该为4,这不难。下面的运算呢?

>>> 53672 + 235253
288925

还是觉得没什么?不可否认,这是很常见的运算。(下面假设你对如何使用计算器很熟悉,知道 1 + 2 * 3(1 + 2) * 3 有何不同。)所有常见算术运算符的工作原理都与你预期的一致。 除法运算的结果为小数,即浮点数(float或floating-point number)。

>>> 1 / 2
0.5
>>> 1 / 1
1.0

如果你想丢弃小数部分,即执行整除运算,可使用双斜杠 //

>>> 1 // 2
0
>>> 1 // 1
1
>>> 5.0 // 2.4
 2.0



在较旧的Python 2.x
版本中,对整数执行常规除法运算的结果与使用双斜杠类似。有一些变通的方法可以达到与
Python 3.x 一致执行方式。这里不多介绍了。

至此,你了解了基本的算术运算符(加法、减法、乘法和除法),但还有一种与整除关系紧密的运算没有介绍。

>>> 1 % 2
1

这是求余(求模)运算符。x % y的结果为x除以y的余数。换而言之,结果为执行整除时余 下的部分,即x % y等价于x - ((x // y) * y)。

>>> 10 // 3
3
>>> 10 % 3
1

在这里,10 // 33 ,因为结果向下取整,而 3*39 ,因此余数为 1

>>> 9 // 3
3
>>> 9 % 3
0

9 除以 3 时,结果正好为 3,没有向下取整,因此余数为 0

>>> 2.75 % 0.5
0.25

从最后一个示例可知,求余运算符也可用于浮点数。 这种运算符甚至可用于负数,但可能不那么好理解。

>>> 10 % 3
1
>>> 10 % -3
-2
>>> -10 % 3
2
>>> -10 % -3
-1

你也许不能通过这些示例一眼看出求余运算的工作原理,但通过研究与之配套的整除运算可帮助理解。

>>> 10 // 3
3
>>> 10 // -3
-4
>>> -10 // 3
-4
>>> -10 // -3
3

基于除法运算的工作原理,很容易理解最终的余数是多少。对于整除运算,需要明白的一个 重点是它向下圆整结果。因此在结果为负数的情况下,圆整后将离0更远。这意味着对于-10 // 3, 将向下圆整到-4,而不是向上圆整到-3。

这里要介绍的最后一个运算符是乘方(求幂)运算符。 请注意,乘方运算符的优先级比求负(单目减)高,因此 -3**2 等价于 -(3**2)

>>> -3 ** 2
-9

如果你要计算的是 (-3)**2 ,必须使用括号进行明确。

>>> (-3) ** 2
9