Python 基本算术

数和算术表达式

数是任何一种编程语言里最基本的语法元素,也是写程序实现计算中使用最多的计算对象。

Python 语言里最基本的一类语法对象和数据对象是各种数。Python 语言里的数分为几类,包括整数、浮点数(表示实数)和复数。它们是 Python 语言里的三个基本类型。不同类型的数性质不同,实现的计算也可能不同。

每个类型有一个名字,表示整数的数据类型的类型的名字为 int,表示浮点数的类型名字为 float,表示复数的类型名字是 complex。它们分别模拟数学里的整数、实数和复数,以及它们的计算(操作)。int 类型对应于数学里的整数,float 类型对应于数学里的实数,complex 类型对应于数学里的复数。注意:这里说 "对应于",因为这些数只是相应数学概念在 Python 里的 "实现",但它们并不等同于相应的数学概念,下面说明。

为简单起见,我们把这几个类型的对象分别称为整数、浮点数和复数。可以在程序里直接描述这几个类型的对象,这样直接描述的程序元素称为 "字面量"。

  • 整数字面量(下面也简称为 "整数")形式上是连续的一串数字字符,非 0 整数不能以 0 作为第一个数字。在 Python 里可以写任意大的整数,例如 12345678901234567890。在这里 +、- 符号是一元运算符,不作为数的组成部分。
  • 浮点数字面量(简称 "浮点数")也用数字字符的序列描述,但其中一定要包含一个小数点或者一个指数部分(也可以都有),如 3.14,23e2(表示 2300.0),3.15e-3(表示 0.00315),123.4e-2(表示 1.234)等。
  • 复数字面量(简称 "复数")用实部和虚部的和的形式描述,两个部分都是浮点数。虚部的形式是浮点数后面紧跟 j 或者 J。例子如 2.3+1.5j,23+56J。也可用 complex(m, n) 的形式描述,如 complex(2.4, 3.0)。注意,即使实部和虚部写的是整数的形式(如 2 + 3j, complex(4, 3)),Python 也把成分变成浮点数。
这里各类型的数与对应数学概念的不同之处首先是其表示的范围,对浮点数和复数还有表示的精度。Python 能表示很大的整数,如包含数万或数亿个十进制位的整数,但是任何一台实际计算机的资源都是有穷的,由于这个限制,Python 里也只能表示有穷多个整数,存在最大的可表示整数。而数学里的整数是一个无穷集合,整数的大小也没有上限。Python 的浮点数类型的表示范围和精度(有效数字位数)都是有穷的,因此只能表示一定范围里的数学实数的近似值;复数的情况与此类似。

注意:100 和 100.0 是不同的对象。例如,这里可以计算 2 的 10000 次方的值,但计算 2.0 的 10000 次方的值将会出错(因为结果超出了浮点数的表示范围,这种情况称为“溢出”)。

算术表达式

从各种数出发,使用算术运算符,可以构造出简单或复杂的算术表达式。基本算术运算符包括 +、-、*、/ 和 **(表示乘方),对于整数还有整除运算符 // 和取模(求余数)运算符 %。

在写算术表达式时,+ 和 - 可以作为一元或二元运算符,其他都是二元运算符。

在程序里写一个算术表达式,就是要求 Python 系统求出它的值。

Python 规定了各种运算符的计算顺序:

  • 先乘方,再乘除,最后加减;
  • 多个连续的加减或乘除从左到右计算,多个连续的乘方从右到左计算。
  • 可以通过加括号改变计算的顺序。
注意计算结果与计算对象的关系:
  • 两个整数运算结果还是整数,但请注意:整除得到的是整数,而除法得到的是浮点数;
  • 两个浮点数运算总得到浮点数;
  • 两个复数运算总得到复数;
  • 整数与浮点数运算得到浮点数,整数与复数运算得到复数;
  • 浮点数与复数运算得到复数。
遇到不同类型的数之间的运算时,先按 整数 -> 浮点数 -> 复数 的顺序,先把较低类型的数转换为较高类型的数,得到相同类型的数之后再做运算。

整数之间的计算是精确计算(除了整数之间的除法,这是近似计算,得到近似的浮点数结果),浮点数和实数的计算都是近似计算,得到一定精度的近似结果。

本页及相关页面(除另声明者外)由裘宗燕创建维护,可自由用于各种学习活动。其他使用需得到作者许可。