本 Python 数字教程的主要目的是教育 Python 编程语言中的数字数据类型及其转换概念。还将学习一些用于操作此数字数据类型的算术运算。
在 Python 中,当变量被赋值为数字时,它就属于 Python 数字数据类型。数字数据类型包括整数值、浮点数值和复数类型值,具体说明如下:
#i is a variable of type int
i1 = 10
i2 = 525
print("integer 1 = ",i1)
print("integer 2 = ",i2)
输出
integer 1 = 10 integer 2 = 525
#i is a variable of type int
f1 = 10.01
f2 = 525.25
print("floating point number 1 = ",f1)
print("floating point number 2 = ",f2)
输出
floating point number 1 = 10.01 floating point number 2 = 525.25
复数是包含实部和虚部的数字,形式为 a+ib,其中 a 和 b 是实数,b 与虚数单位 i 相关。示例和输出。
C1 =-5-6i
C2 = 4+3i
print("Complex number 1 = ",C1)
print("Complex number 2 = ",C2)
输出
Complex number 1 = -5-6i Complex number 2 = 4+3i
大多数编程语言中独一无二的特性之一是类型转换。**类型转换**可以简单地定义为将一个对象的数据类型更改为另一种数据类型,以进行各种操作或评估。根据无缝操作的需求,转换可以隐式或显式地进行。
**隐式转换**,也称为*类型强制转换*,通常定义为根据编译器或解释器所需的表达式或评估,将一种 Python 数据类型转换为另一种。Python 编程语言支持类型转换,尽管它存在一些我们将在后面讨论的陷阱。
让我们详细看下面的例子来进一步了解 Python 类型强制转换。假设我们需要计算两个整数类型数字 n1 和 n2 的平均值。结果可能是一个小数,存储为浮点值。Python 会自动将结果值声明为浮点类型,使程序员无需担心错误。这种隐式转换通常称为类型强制转换。
#Type coercion example
n1 = 2
n2 = 3
print(“Average of” n1 “and” n2 “ = ”,(n1+n2)/2)
输出
Average of 2 and 3 = 2.5
在某些情况下,Python 需要根据需求显式地将一种 Python 数据类型转换为另一种。这种类型的转换通常称为**显式转换**或*类型转换*。Python 有一些内置函数可以帮助显式转换数据类型。它们列在下面:
#Type casting example
a = 10
b = 5.3
c = 4+5i
#Conversion
x= float (a)
y=int(b)
z=complex of (a)
#Printing output with corresponding data type
print( x "belongs to",type(x))
print( y "belongs to",type(y))
print( z "belongs to",type(z))
输出
10.0 belongs to <class 'float'> 5 belongs to <class 'int'> 10+0i belongs to <class 'complex'>
我们在数学中学过小数及其运算,如加法、减法、乘法……。但在学习编程语言时,我们给小数赋予了一个新名称,称为**浮点数**。我们通常将浮点数视为小数本身。但实际上存在一些差异,在学习机器语言时:
我们知道机器只能理解二进制表示,即 0 和 1。浮点数也以二进制形式处理。因此,二进制浮点计算与典型的十进制计算非常不同。
A = 1.10
B = 2.20
C = A+B
print("C =",C)
输出
C = 3.3000000000000003
从上面将 1.10 和 2.20 相加的示例来看,我们期望得到 3.30 作为它们的和。但我们得到的结果是 3.3000000000000003。这就是分数在二进制形式中的表示方式。因此,我们必须大致将值四舍五入为 3.30。所以我们可以说计算机中存储的小数不是精确的。
通过简单地导入 decimal 模块,我们可以解决浮点数的不精确性问题。与二进制浮点数不同,decimal 模块具有程序员可更改的精度,可维护精度,有助于执行我们在学校中学过的计算。因此,decimal 模块对于会计、金融应用等非常有用。
import decimal
A = decimal.Decimal('1.1')
B = decimal.Decimal('2.2')
C = 3
D = 3.14
print("A =",A)
print("B =",B)
print("A+B = ",A+B)
print("A+C = ",A+C)
print("A+D = ",A+D)
输出
A = 1.1
B = 2.2
A+B = 3.3
A+C = 4.1
print("A+D = ",A+D)
TypeError: unsupported operand type(s) for +: 'decimal.Decimal' and 'float'
注意:Decimal 运算符处理整数,但浮点数必须转换为 Decimal 实例。
下表总结了 Decimal 和浮点数之间的区别。
| Decimal | Float |
|---|---|
| 具有精确表示。 | 没有精确表示。 |
| 精度长度根据用户需求而变化。 | 精度长度是固定的。 |
| 包含有效数字的概念。 | 不支持有效数字。 |
| 部分涵盖已发布的标准。 | 完全涵盖已发布的标准。 |
| Decimal 运算较慢。 | 浮点数运算较快。 |
| 例如:1.10 + 2.20 = 3.30 | 例如:1.1 + 2.2 = 3.3000000000000003 |
与 decimal 模块类似,另一个与数字数据类型相关的重要模块是 fraction 模块。
分子和分母构成了我们早期课程中学到的分数。Python 还通过导入 fractions 模块来支持分数计算。
创建分数实例的不同方法如下所示。
import fractions
A = fractions.Fraction(1,2)
B = fractions.Fraction (3,4)
print("A =",A)
print("B =",B)
print("A+B =",A+B)
输出
A = 1/2 B = 3/4 A+B = 5/4
import fractions
A = fractions.Fraction('5/7')
B = fractions.Fraction('3/8')
print("A =",A)
print("B =",B)
print("A+B =",A+B)
输出
A = 5/7 B = 3/8 A+B = 61/56
import fractions
A = fractions.Fraction(2.5)
B = fractions.Fraction(1.5)
print("A =",A)
print("B =",B)
print("A+B =",A+B)
输出
A = 5/2 B = 3/2 A+B = 4
import fractions
A = fractions.Fraction('.5')
B = fractions.Fraction('1.5')
print("A =",A)
print("B =",B)
print("A+B =",A+B)
输出
A = 1/2 B = 3/2 A+B = 2
Python 还提供了另外两个重要的模块,它们实际上是数学活动的支柱。这些模块是 **math** 和 **random**,用于执行三角函数、对数、概率等。math 模块的相关函数制成表格以供参考。
| 序号 | 函数 | 描述 | 示例 |
|---|---|---|---|
| 1 | abs(x) / fabs(x) | 返回 x 的绝对值。 | abs(5.6) => 5 |
| 2 | ceil(x) | 返回 x 的向上取整值。 | ceil(5.6)=>6 |
| 3 | floor(x) | 返回 x 的向下取整值。 | floor(5.6)=>5 |
| 4 | exp(x) | 返回 x 的指数值;ex | exp(x)=ex ; e0 = 1 |
| 5 | log(x) | 返回 x 的对数值,对于 x>0。 | log2(8) =3 |
| 6 | log10(x) | 返回 x 以 10 为底的对数值,对于 x>0。 | log10(100)=2 |
| 7 | sqrt(x) | 返回 x 的平方根,x>0。 | sqrt(16)=4 |
| 8 | Pow(x,y) | 返回 x 的 y 次方。 | pow(2,3)=8 |
| 9 | round(x,[n]) | 返回 X 的四舍五入值,忽略符号。 | round(5.6) =6 round(-5.4) =-5 |
| 10 | max(n1,n2,n3…) | 返回最大值。 | max(1,5,9) =9 |
| 11 | min(n1,n2,n3…) | 返回最小值。 | min(1,5,9)=1 |
| 12 | modf(x) | 返回浮点数的整数部分和小数部分。 | modf(5.6)=0.6000000 |
| 13 | sin() | 返回弧度制参数的正弦值。 | sin 0 |
| 14 | cos() | 返回弧度制参数的余弦值。 | cos 0 |
| 15 | tan() | 返回弧度制参数的正切值。 | tan 0 |
| 16 | hypot(a,b) | 返回参数的斜边值。在此处键入方程。 | hypot(3,4) =5 |
| 17 | degrees() | 将弧度值转换为度并返回度值。 | |
| 18 | radians() | 将度转换为弧度并返回弧度值。 |
Python 包含一组用于生成或操作随机数的函数,这些函数广泛用于游戏应用、测试应用、安全和隐私应用等。下表列出了操作随机数的函数。
| 序号 | 函数 | 描述 |
|---|---|---|
| 1 | choice(sequences) | 从字符串、列表、元组中返回一个随机数。 |
| 2 | randrange(start,stop,step) | |
| 3 | random() | 返回一个随机浮点数,0<=X<1。 |
| 4 | seed([x]) | 通过保存随机函数的状态来生成相同的随机数。 |
| 5 | shuffle(list) | 用于重新排列列表。 |
| 6 | uniform(x,y) | 生成一个介于 x 和 y 之间的随机浮点数。 |