Python 基础教程(3rd ed)(4):快速上手:基础知识 1.3

阅读数:44 2019 年 10 月 23 日 05:28

Python基础教程(3rd ed)(4):快速上手:基础知识 1.3

(数和表达式)

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

复制代码
>>> 2 + 2

结果应该为 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 版本中,对整数执行常规除法运算的结果与使用双斜杠类似。如果你使用的是 Python 2.x,要对整数执行常规除法运算,可在程序开头添加如下语句(稍后介绍如何编写完整的程序),也可直接在交互式解释器中执行这条语句:

复制代码
>>> from __future__ import division

注意 在上述语句中,future前后分别是两条下划线:__future__

另外,从命令行运行较旧的 Python 版本时,还可使用命令行开关-Qnew。1.8.2 节将更详尽地介绍__future__

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

复制代码
>>> 1 % 2
1

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

复制代码
>>> 10 // 3
3
>>> 10 % 3
1
>>> 9 // 3
3
>>> 9 % 3
0
>>> 2.75 % 0.5
0.25

在这里,10 // 33,因为结果向下圆整,而 3 × 3 为 9,因此余数为 1。将 9 除以 3 时,结果正好为 3,没有向下圆整,因此余数为 0。在需要执行之前菜谱指定的“每 10 分钟检查一次”之类的操作时,这种运算可能很有用:只需检查minute % 10是否为0。(有关如何执行这种检查,请参阅本章后面的旁注“先睹为快:if语句”。)从最后一个示例可知,求余运算符也可用于浮点数。这种运算符甚至可用于负数,但可能不那么好理解。

复制代码
>>> 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

这里要介绍的最后一个运算符是乘方(求幂)运算符。

复制代码
>>> 2 ** 3
8
>>> -3 ** 2
-9
>>> (-3) ** 2
9

请注意,乘方运算符的优先级比求负(单目减)高,因此-3**2等价于-(3**2)。如果你要计算的是(-3)**2,必须明确指出。

评论

发布