1. 数值类型

Python中的整数的类型为整型(int),带小数点的数字叫做浮点型(float)。后面我们还会提到更多的数值类型。

1.1 整数运算

整数是不带小数部分的数字,如 14、-11和0 。Python支持4种基本算术运算:+(加)、-(减)、*(乘)、/(除)。Python还使用**和%分别表示乘方和求余,// 表示整除,例如,25%7的值为4,因为25除以7的余数为4 。下面是一些示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> 5 + 9			
14
>>> 22 - 6
16
>>> 12 * 14
168
>>> 22 / 7 # 注意:除(/)总是会返回一个浮点型的值
3.142857142857143
>>> 2 ** 4 # python中用 ** 来表示乘方, ^ 是位运算中的操作符
16
>>> 22 // 7 # // 是整除运算符,运算结果只保留整数部分
3
>>> 25 % 7 # % 求余
4
>>> 1 + 2 * 3
7
>>> (1 + 2) * 3
9

1.2 浮点数运算

浮点数运算运行使用的是浮点数。在Python中,浮点数是带小数点的数字,例如,-3.1 ,11.14 ,10.0 都是浮点数。

所有适用于整数的算术运算都可用于浮点数,包括%(求余)和 // (整除)。

1.2.1 浮点数字面量

对于非常大或非常小的浮点数,通常用科学记数法来表示。

1
2
>>> 8.8 ** -14
5.987459515064978e-14

e-14表示将它前面的数字乘以10的-6次方。如果愿意,你可以直接使用科学记数法。

1
2
>>> 2e+03 # 加号可以省略,写做:2e03
2000.0

1.2.2 溢出

与整数不同,浮点数存在上限和下限,超出上限或下限将导致溢出错误,溢出错误意味着计算结果太大或太小,Python无法将其表示为浮点数。

1
2
3
4
>>> 11.4**1002
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: (34, 'Numerical result out of range')

1.2.3 精度有限

无论在哪种计算机上,浮点数的精度都是一个无法解决的难题。在计算机中,数字用二进制表示,但并非所有的浮点数都可用二进制精确地表示。即便在简单的情况下,也可能出现问题。

1
2
>>> 1-2/3
0.33333333333333337

结果应该是小数点后面有无穷个3,但这里只包含17位。其次,最后一位也不对,应该是3而不是7 。

tips:一般而言,应优先考虑使用整数而不是浮点数,因为他们更精确且绝不会溢出。

1.2.4 复数

Python提供了内置的复数支持。

  • j来标记虚数

  • 复数可以分离实部虚部

    -复数.real (实部)

    -复数.imag (虚部)

  • 复数的共轭

    -复数.conjugate()

1
2
3
4
>>> 1j
1j
>>> 1j * 1j
(-1 + 0j)

1.3 长度不受限制

与其他大多数编程语言不同,Python对整数的长度没有限制,你可以执行数十位甚至数百数千位的整数运算。

1
2
>>> 14 ** 114
45561295805358480009792971803280291297175988483278058598019727398980460381355718731361281345841645083428173033122033249515540054016

1.4 求值顺序

​ 表 3-1 基本算数运算符

名称 运算符
加法 +
减法 -
乘法 *
除法 /
整除 //
求余 %
乘方 **

表3-1总结了Python基本算数运算符,并案优先级从低到高的顺序将它们编组。例如,计算表达式1 + 2 3,Python先执行 ,在执行 + ,因为 的优先级更高(因此,这个表达式的值为7,而不是9)。优先级相同的运算符按书写顺序计算。要改变计算顺序,可以使用圆括号 () ,例如 (1 + 2) 3的结果为9 。换句话说,Python算术运算的规则与常规算术运算相同。

1.5 其他数学函数

Python自带了很多由编写好的代码组成的模块,math就是其中之一。表3-2列出了math模块中的一些最常用的函数。

​ 表3-2 模块math中的一些函数

函数 描述
ceil(x) 大于或等于x的整数
cos(x) x的余弦
degree(x) 将x弧度转换为度数
exp(x) e的x次方
factorial(n) 计算n的阶乘(n!)。n!=1 2 3…* n ,其中n必须是整数
log(x) 以e为底的x的对数
log(x, b) 以b为底的x的对数
pow(x, y) x的y次方
radians(x) 将x度转换为弧度数
sin(x) x的正弦
sqrt(x) x的平方根
tan(x) x的正切

1.5.1 使用返回值

这些函数返回一个值,这意味着它们的结果为整数或浮点数,具体随函数而异。

在可以使用数字的任何地方,都可使用这些函数。Python自动执行函数,并将函数调用替换为返回值。

1.5.2 导入模块

要使用模块math或其他任何Python模块,都必须先导入:

1
>>> import math

这样就可以访问任何数学函数了,方法是在函数前面加上math. 。

1
2
>>> math.sqrt(5)
2.23606797749979

下面是另一种导入模块的方式。

1
>>> from math import *

这样调用math模块中的任何函数时,都无需在前面加上math. 。

1
2
>>> log(14 + 10)
3.1780538303479458

tips: 你还可导入模块math的特定函数,例如,from math import sqrt, tan 只导入函数sqrt和tan。关于模块的详细用法将会在后面提到。