购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 算术运算

下表总结了Python中的 算术运算符 ,其中包括一些在代数中没有的符号。

000

乘法( *

Python将星号( * )作为 乘法运算符 ,例如:

000

求幂运算( **

求幂( ** )运算符计算一个数的幂,例如:

000

如需计算平方根,可以使用1/2(即0.5)作为指数:

000

除法( / )和整除( //

除法 / )运算用分子除以分母,结果为带小数点的浮点数,如下所示:

000

整除( // )用分子除以分母,得到不大于结果的最大 整数 。Python会直接 截断 (丢弃)小数部分:

000

使用除法( / )时,-13除以4的结果为-3.25,如下:

000

整除( // )的结果为 不大于 -3.25的最大整数,即-4,如下:

000

异常和回溯

Python不允许用“ / ”或“ // ”除以零,否则将导致 异常 ,表示有问题发生:

000

Python使用 回溯 来报告异常。上面的回溯表示发生了类型为 ZeroDivisionError 的异常(大多数异常的名称以 Error 结尾)。在交互模式下,下面这行异常信息中的 10 表示导致异常的代码段编号

    <ipython-input-10-cd759d3fcf39> in <module>()

----> 开头的行显示导致异常的代码。当产生异常的代码段包含多行代码时, ---> 右侧的数字 1 表示导致异常的语句是代码段内的第1行。异常信息的最后一行显示异常名,后跟冒号( : )和更加详细的异常信息:

    ZeroDivisionError: division by zero

第9章对异常进行了详细的讨论。

如果在代码中使用了尚未创建的变量,也会发生异常。以下代码段试图将整数 7 与未定义的变量 z 相加,这将会产生 NameError 异常:

000

取余运算符

取余运算符 (%)计算左操作数除以右操作数后得到的余数:

000

上面的代码段中, 17 除以 5 的商为 3 ,余数为 2 。取余运算符通常用于整数,但也可以用于其他类型的数字,例如:

000

直线形式

在编译器或解释器中一般不能使用形如 000 的代数形式,必须使用Python的运算符以 直线形式 来表示。上面的表达式可以写为 a / b 或者 a // b (表示整除),这样所有的运算符和操作数都呈水平排列。

用括号表示分组表达式

与在代数中一样,括号将Python的表达式组合在一起。例如,下面的代码先计算 5+3 ,然后再用 10 乘以 5+3 的结果,如下:

000

如果没有括号,计算结果是 不同的 ,如下:

000

如果去掉括号会得到 相同的 结果,则括号是 多余的 (不必要的)。

运算符优先级规则

Python在算术表达式中使用运算符时遵守以下 运算符优先级规则 (通常与代数中的规则相同):

1. 首先计算括号中的表达式,因此可以使用括号强制表达式按照我们希望的运算顺序进行计算。括号具有最高级别的优先级。在含有 嵌套括号 的表达式中,例如( a/(b-c) ),优先计算最内层括号中的表达式(即 b-c )的值。

2. 接下来是求幂运算。如果表达式包含多个求幂运算,Python会按照从右到左的顺序进行计算。

3. 再往下计算乘法、除法、整除和模。如果表达式包含多个乘法、除法、整除和模运算,Python按照从左到右的顺序计算。乘法、除法、整除和模运算的优先级相同。

4. 最后计算加法和减法。如果表达式包含多个加法和减法运算,Python会按照从左到右的顺序进行计算。加法和减法也具有相同的优先级。

有关运算符及其优先级的完整列表(从最低到最高的顺序),请参阅https://docs.python.org/3/reference/expressions.xhtml#operator-prece-dence。

运算符的结合性

当提到Python按照从左到右的顺序做运算时,指的是运算的 结合性 。例如,在下面的表达式中:

    a + b + c

加法运算符( + )从左到右结合,就好像加了括号一样,形如 (a+b)+c 。除了从右到左结合的取幂运算符( ** )之外,其他Python运算符的结合性都是从左到右。

冗余括号

为了使表达式更加清晰,可以使用冗余括号对子表达式进行分组。例如,二次多项式

000

可以用括号括起来,如下所示:

000

这样的表达更加清晰。此外,将复杂的表达式分解为由更短、更简单的表达式构成的语句序列,也可以提高程序的清晰度。

操作数的类型

算术运算符既可以连接整数,也可以连接浮点数。如果连接的两个操作数都是整数,计算结果为整数,但除法( / )运算符除外,因为它的结果总是一个浮点数。如果两个操作数都是浮点数,则结果为浮点数。既有整数也有浮点数的表达式称为 混合类型表达式 ,这种表达式的结果是浮点型。 Y4M0hvhzj7rrZbG28BKw1fSWwaPmjdKEGLoG9jArba5sgjeutSpRmMtZcNEUnmMe

点击中间区域
呼出菜单
上一章
目录
下一章
×