>>> 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中的数值类型¶
计算机处理的对象有多种类型,这些类型在计算机中称为“数据类型”。 数据类型主要又分为两类,一类是数字形式的,称为“数值类型”;还有一类型是字符串。
记住,表达式是值和操作符的组合,它们可以通过求值成为单个值。
“数值类型”是一类值,每个值都只属于一种数值类型。例如,值 -2
和
30
属于“整型”值。 整型(或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
表示 10
, b
表示
11
,依次类推,最后 f
表示 15。
在十六进制表达中不区分“字母”的大小写。
>>> 0xAF
175
注意这里,在 Jupyter 中,会对表达式进行求值,从而得到对应的 10 进制的结果。
>>> 0xaF
175
在 Python 中使用 0o
开头的数字表示八进制, 注意 0
后面是英文字母
o
。
>>> 0o1234
668
在八进制表达中,数字 8
, 9
不能出现:
>>> 0o129
Cell In [10], line 1
0o129
^
SyntaxError: invalid digit '9' in octal literal
0b
开关的表达式表示二进制。在二进制表达式中,只能使用数字 0
与
1
:
>>> 0b1011010010
722
这些表示法都以 0
打头。
1.2.3. Python 数值类型转换¶
有时候,我们需要对数据内置的类型进行转换,数值类型的转换,你只需要将数值类型作为函数名即可。
int(x)
将x
转换为一个整数。float(x)
将x
转换到一个浮点数。complex(x)
将x
转换到一个复数,实数部分为x
,虚数部分为0
。complex(x, y)
将x
和y
转换到一个复数,实数部分为x
,虚数部分为y
。x
和y
是数字表达式。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 // 3
为 3
,因为结果向下取整,而 3*3
为 9
,因此余数为 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