Python 数字


2021年8月23日, Learn eTutorial
1953

本 Python 数字教程的主要目的是教育 Python 编程语言中的数字数据类型及其转换概念。还将学习一些用于操作此数字数据类型的算术运算。

Python 数字数据类型

在 Python 中,当变量被赋值为数字时,它就属于 Python 数字数据类型。数字数据类型包括整数值、浮点数值和复数类型值,具体说明如下:

  • int 
  • float
  • complex

整数类型

  • 整数数据类型仅包含整数值(零、正数和负数)。
  • 不包含小数部分。
  • 长度无界。

示例:整数类型

#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

浮点数类型

  • 包含浮点数。
  • 包含小数部分。
  • 小数点精度限制为 15 位小数。

示例:浮点数类型

#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 相关。示例和输出。

  • 包含实部 (a) 和虚部 (b)。
  • 形式为 a + ib。
  • 虚数单位是 '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 编程语言支持类型转换,尽管它存在一些我们将在后面讨论的陷阱。

让我们详细看下面的例子来进一步了解 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 有一些内置函数可以帮助显式转换数据类型。它们列在下面:

  1. int( arg ) - 将 arg 的数据类型转换为整数。
  2. float(arg) - 将 arg 的数据类型转换为浮点数。
  3. complex(arg1, arg2) - 将 arg1 和 arg2 的数据类型转换为复数类型,其中 arg1 包含实部,arg2 包含虚部。

示例:如何进行类型转换

#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'>

Python Number – 模块

Decimal 模块

我们在数学中学过小数及其运算,如加法、减法、乘法……。但在学习编程语言时,我们给小数赋予了一个新名称,称为**浮点数**。我们通常将浮点数视为小数本身。但实际上存在一些差异,在学习机器语言时:

我们知道机器只能理解二进制表示,即 0 和 1。浮点数也以二进制形式处理。因此,二进制浮点计算与典型的十进制计算非常不同。

示例:Python 中的 Decimal 模块

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 模块对于会计、金融应用等非常有用。

示例:Python 中的 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

Fraction 模块

与 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

Math 模块函数

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 之间的随机浮点数。