Python - 数字



Python 内置支持存储和处理数值数据(Python 数字)。在几乎所有Python 应用中,你都会用到数字。显然,任何计算机应用程序都处理数字。本教程将讨论不同类型的 Python 数字及其属性。

Python - 数字类型

Python 提供三种内置的数字类型

  • 整数 (int)
  • 浮点数 (float)
  • 复数

Python 还具有名为 bool 的内置布尔数据类型。它可以被视为 int 类型的子类型,因为它的两个可能值 TrueFalse 分别表示整数 1 和 0。

Python − 整数

在 Python 中,任何没有小数部分的数字都是整数。(请注意,如果数字的小数部分为 0,并不意味着它是一个整数。例如,数字 10.0 不是整数,它是一个小数部分为 0 的浮点数,其数值为 10。)整数可以是零、正数或负整数。例如,1234、0、-55 都表示 Python 中的整数。

有三种方法可以形成整数对象:(a) 字面量表示,(b) 任何计算结果为整数的表达式,以及 (c) 使用 int() 函数。

字面量是在源代码中直接表示常量的表示法。例如:

>>> a =10

但是,请看以下整数变量 *c* 的赋值。

a = 10
b = 20
c = a + b

print ("a:", a, "type:", type(a))
print ("c:", c, "type:", type(c))

它将产生以下输出

a: 10 type: <class 'int'>
c: 30 type: <class 'int'>

这里,*c* 的确是一个整数变量,但是首先计算表达式 *a + b*,然后间接地将其值赋给 *c*。

形成整数对象的第三种方法是使用 int() 函数的返回值。它将浮点数或字符串转换为整数。

>>> a=int(10.5)
>>> b=int("100")

你可以将整数表示为二进制、八进制或十六进制数。但是,对象在内部存储为整数。

Python 中的二进制数

仅由二进制数字(1 和 0)组成并以 "0b" 为前缀的数字是二进制数。如果将二进制数赋给变量,它仍然是一个 int 变量。

要表示二进制形式的整数,可以直接将其存储为字面量,或使用 int() 函数,其中基数设置为 2

a=0b101
print ("a:",a, "type:",type(a))

b=int("0b101011", 2)
print ("b:",b, "type:",type(b))

它将产生以下输出

a: 5 type: <class 'int'>
b: 43 type: <class 'int'>

Python 中还有一个 bin() 函数。它返回整数的二进制字符串等效项。

a=43
b=bin(a)
print ("Integer:",a, "Binary equivalent:",b)

它将产生以下输出

Integer: 43 Binary equivalent: 0b101011

Python 中的八进制数

八进制数仅由 0 到 7 的数字组成。为了指定整数使用八进制表示法,它需要以 "0o"(小写 O)或 "0O"(大写 O)为前缀。八进制数的字面量表示如下:

a=0O107
print (a, type(a))

它将产生以下输出

71 <class 'int'>

请注意,该对象在内部存储为整数。八进制数 107 的十进制等效值为 71。

由于八进制数系统有8个符号(0到7),其基数为8。因此,在使用int()函数将八进制字符串转换为整数时,需要将base参数设置为8。

a=int('20',8)
print (a, type(a))

它将产生以下输出

16 <class 'int'>

八进制数30的十进制等价值为16。

在下面的代码中,从八进制表示法获得两个int对象,并执行它们的加法运算。

a=0O56
print ("a:",a, "type:",type(a))

b=int("0O31",8)
print ("b:",b, "type:",type(b))

c=a+b
print ("addition:", c)

它将产生以下输出

a: 46 type: <class 'int'>
b: 25 type: <class 'int'>
addition: 71

要获得整数的八进制字符串,请使用oct()函数。

a=oct(71)
print (a, type(a))

Python中的十六进制数

顾名思义,十六进制数系统有16个符号。它们是0-9和A到F。前10位数字与十进制数字相同。字母A、B、C、D、E和F分别相当于11、12、13、14、15和16。这些字母符号可以使用大写或小写。

对于十六进制表示的整数的字面量表示,请在其前面加上"0x""0X"

a=0XA2
print (a, type(a))

它将产生以下输出

162 <class 'int'>

要将十六进制字符串转换为整数,请在int()函数中将base设置为16。

a=int('0X1e', 16)
print (a, type(a))

尝试运行以下代码片段。它接收一个十六进制字符串,并返回整数。

num_string = "A1"
number = int(num_string, 16)
print ("Hexadecimal:", num_string, "Integer:",number)

它将产生以下输出

Hexadecimal: A1 Integer: 161

但是,如果字符串包含任何十六进制符号表以外的符号,则会生成错误。

num_string = "A1X001"
print (int(num_string, 16))

上述程序生成以下错误:

Traceback (most recent call last):
  File "/home/main.py", line 2, in 
    print (int(num_string, 16))
ValueError: invalid literal for int() with base 16: 'A1X001'

Python的标准库具有hex()函数,可以使用该函数获得整数的十六进制等价值。

a=hex(161)
print (a, type(a))

它将产生以下输出

0xa1 <class 'str'>

虽然整数可以表示为二进制、八进制或十六进制,但内部它仍然是整数。因此,在执行算术运算时,表示方式无关紧要。

a=10 #decimal
b=0b10 #binary
c=0O10 #octal
d=0XA #Hexadecimal
e=a+b+c+d

print ("addition:", e)

它将产生以下输出

addition: 30

Python - 浮点数

浮点数具有整数部分和小数部分,由小数点符号(.)分隔。默认情况下,数字为正数,负数前面加一个减号(-)符号。

浮点数是Python的float类的对象。要存储float对象,可以使用字面量表示法、使用算术表达式的值或使用float()函数的返回值。

使用字面量是最直接的方法。只需将带有小数部分的数字赋值给变量。以下每个语句都声明一个float对象。

>>> a=9.99
>>> b=0.999
>>> c=-9.99
>>> d=-0.999

在Python中,对浮点数的小数点后可以有多少位数字没有限制。但是,为了缩短表示,使用Ee符号。E代表10的幂。例如,E4是10的4次幂(或10的4次方),e-3是10的-3次幂。

在科学计数法中,数字具有系数和指数部分。系数应为大于或等于1但小于10的浮点数。因此,1.23E+3、9.9E-5和1E10是带有科学计数法的浮点数的示例。

>>> a=1E10
>>> a
10000000000.0
>>> b=9.90E-5
>>> b
9.9e-05
>>> 1.23E3
1230.0

形成浮点数对象的第二种方法是间接的,使用表达式的结果。在这里,两个浮点数的商被赋值给一个变量,该变量引用一个浮点数对象。

a=10.33
b=2.66
c=a/b

print ("c:", c, "type", type(c))

它将产生以下输出

c: 3.8834586466165413 type <class 'float'>

Python的float()函数返回一个float对象,如果其内容合适,则解析数字或字符串。如果括号中没有给出参数,则返回0.0,对于int参数,则添加值为0的小数部分。

>>> a=float()
>>> a
0.0
>>> a=float(10)
>>> a
10.0

即使整数以二进制、八进制或十六进制表示,float()函数也会返回小数部分为0的浮点数。

a=float(0b10)
b=float(0O10)
c=float(0xA)

print (a,b,c, sep=",")

它将产生以下输出

2.0,8.0,10.0

float()函数从包含浮点数的字符串中检索浮点数,该浮点数可以采用标准小数点格式,也可以采用科学计数法。

a=float("-123.54")
b=float("1.23E04")
print ("a=",a,"b=",b)

它将产生以下输出

a= -123.54 b= 12300.0

在数学中,无穷大是一个抽象概念。从物理上讲,无限大的数字永远无法存储在任何数量的内存中。但是,对于大多数计算机硬件配置,10的400次幂的非常大的数字由Inf表示。如果使用"Infinity"作为float()函数的参数,则返回Inf。

a=1.00E400
print (a, type(a))
a=float("Infinity")
print (a, type(a))

它将产生以下输出

inf <class 'float'>
inf <class 'float'>

另一个这样的实体是Nan(代表非数字)。它表示任何未定义或不可表示的值。

>>> a=float('Nan')
>>> a
Nan

Python - 复数

在本节中,我们将详细了解Python中的复数数据类型。复数在电磁学、电子学、光学和量子理论的数学方程式和定律中得到应用。傅里叶变换使用复数。它们用于带有波函数的计算、设计过滤器、数字电子中的信号完整性、射电天文学等。

复数由实部和虚部分组成,用"+"或"-"分隔。实部可以是任何浮点数(或它本身是一个复数)。虚部也是浮点数/复数,但乘以虚数。

在数学中,虚数"i"定义为-1的平方根($\sqrt{−1}$)。因此,复数表示为"x+yi",其中x是实部,"y"是虚部的系数。

通常,为了避免与在电力理论中将其用作电流混淆,使用符号"j"代替"i"表示虚数。Python也使用"j"作为虚数。因此,"x+yj"是Python中复数的表示。

与int或float数据类型一样,可以使用字面量表示法或使用complex()函数来形成复数对象。以下所有语句都形成一个复数对象。

>>> a=5+6j
>>> a
(5+6j)
>>> type(a)
<class 'complex'>
>>> a=2.25-1.2J
>>> a
(2.25-1.2j)
>>> type(a)
<class 'complex'>
>>> a=1.01E-2+2.2e3j
>>> a
(0.0101+2200j)
>>> type(a)
<class 'complex'>

请注意,实部以及虚部的系数必须是浮点数,它们可以用标准小数点表示法或科学计数法表示。

Python的complex()函数有助于形成复数类型的对象。该函数接收实部和虚部的参数,并返回复数。

complex()函数有两个版本,带两个参数和带一个参数。使用带两个参数的complex()很简单。它使用第一个参数作为实部,第二个参数作为虚部的系数。

a=complex(5.3,6)
b=complex(1.01E-2, 2.2E3)
print ("a:", a, "type:", type(a))
print ("b:", b, "type:", type(b))

它将产生以下输出

a: (5.3+6j) type: <class 'complex'>
b: (0.0101+2200j) type: <class 'complex'>

在上面的示例中,我们使用x和y作为浮点参数。它们甚至可以是复数数据类型。

a=complex(1+2j, 2-3j)
print (a, type(a))

它将产生以下输出

(4+4j) <class 'complex'>

对上面的例子感到惊讶吗?将"x"设为1+2j,将"y"设为2-3j。尝试手动计算"x+yj",你就会明白了。

complex(1+2j, 2-3j)
=(1+2j)+(2-3j)*j
=1+2j +2j+3
=4+4j

如果只为complex()函数使用一个数值参数,则将其视为实部的值;虚部设置为0。

a=complex(5.3)
print ("a:", a, "type:", type(a))

它将产生以下输出

a: (5.3+0j) type: <class 'complex'>

如果complex()函数的唯一参数是具有复数表示的字符串,则它也可以将字符串解析为复数。

在下面的代码片段中,要求用户输入一个复数。它用作参数。由于Python将输入读取为字符串,因此该函数从中提取复数对象。

a= "5.5+2.3j"
b=complex(a)
print ("Complex number:", b)

它将产生以下输出

Complex number: (5.5+2.3j)

Python的内置complex类有两个属性realimag - 它们从对象中返回实部和虚部的系数。

a=5+6j
print ("Real part:", a.real, "Coefficient of Imaginary part:", a.imag)

它将产生以下输出

Real part: 5.0 Coefficient of Imaginary part: 6.0

complex类还定义了一个conjugate()方法。它返回另一个复数,其虚数部分的符号相反。例如,x+yj的共轭是x-yj。

>>> a=5-2.2j
>>> a.conjugate()
(5+2.2j)

数字类型转换

Python在包含混合类型的表达式中内部将数字转换为公共类型以进行计算。但有时,你需要显式地将数字从一种类型强制转换为另一种类型,以满足运算符或函数参数的要求。

  • 使用int(x)将x转换为普通整数。

  • 使用long(x)将x转换为长整数。

  • 使用float(x)将x转换为浮点数。

  • 使用complex(x)将x转换为实部为x、虚部为零的复数。同样,使用complex(x, y)将x和y转换为实部为x、虚部为y的复数。x和y是数值表达式。

让我们看看各种与数字和数学相关的函数。

理论函数和表示函数

Python在math模块中包含以下理论函数和表示函数:

序号 函数及说明
1

math.ceil(x)

x的上限:不大于x的最小整数

2 math.comb(n,k)

此函数用于查找从y个项目中选择x个项目的方法数,不重复且无顺序。

3

math.copysign(x, y)

此函数返回一个浮点数,其大小(绝对值)为x,但符号为y。

4

math.cmp(x, y)

此函数用于比较两个对象的数值。此函数在Python3中已弃用。

5

math.fabs(x)

此函数用于计算给定整数的绝对值。

6

math.factorial(n)

此函数用于查找给定整数的阶乘。

7

math.floor(x)

此函数计算给定整数的向下取整值。

8

math.fmod(x, y)

math模块中的fmod()函数返回与"%"运算符相同的结果。但是,fmod()给出的模除结果比模运算符更准确。

9

math.frexp(x)

此函数用于计算给定数字的尾数和指数。

10

math.fsum(iterable)

此函数返回iterable(即列表、元组、数组)中所有数值项的浮点和。

11

math.gcd(*integers)

此函数用于计算所有给定整数的最大公约数。

12

math.isclose()

此函数用于确定两个给定的数值是否彼此接近。

13

math.isfinite(x)

此函数用于确定给定数字是否是有限数字。

14

math.isinf(x)

此函数用于确定给定值是否为无穷大(正或负)。

15

math.isnan(x)

此函数用于确定给定数字是否为"NaN"。

16

math.isqrt(n)

此函数计算给定非负整数的整数平方根。

17

math.lcm(*integers)

此函数用于计算给定整数参数的最小公倍数。

18

math.ldexp(x, i)

此函数返回第一个数字与第二个数字指数的乘积。因此,ldexp(x,y)返回x*2**y。这是frexp()函数的反函数。

19

math.modf(x)

这将x的小数部分和整数部分返回为一个包含两项的元组。

20

math.nextafter(x, y, steps)

此函数返回x之后朝向y的下一个浮点值。

21

math.perm(n, k)

此函数用于计算排列。它返回从y个项目中选择x个项目的方法数,不重复且按顺序排列。

22

math.prod(iterable, *, start)

此函数用于计算作为参数给出的iterable(列表、元组)中所有数值项的乘积。

23

math.remainder(x,y)

此函数返回关于y的x的余数。这是x − n*y的差,其中n是最接近商x / y的整数。

24

math.trunc(x)

此函数返回数字的整数部分,去除小数部分。对于正x,trunc()等效于floor(),对于负x,等效于ceil()。

25

math.ulp(x)

此函数返回浮点数x的最低有效位的数值。对于正x,trunc()等效于floor(),对于负x,等效于ceil()。

幂函数和对数函数

序号 函数及说明
1

math.cbrt(x)

此函数用于计算一个数的立方根。

2

math.exp(x)

此函数计算x的指数:ex

3

math.exp2(x)

此函数返回2的x次幂。它等效于2**x。

4

math.expm1(x)

此函数返回e的x次幂减1。这里e是自然对数的底数。

5

math.log(x)

此函数计算x的自然对数,对于x>0。

6

math.log1p(x)

此函数返回1+x的自然对数(底数e)。结果的计算方式对于接近零的x是准确的。

7

math.log2(x)

此函数返回x的以2为底的对数。这通常比log(x, 2)更准确。

8

math.log10(x)

x的以10为底的对数,对于x>0。

9

math.pow(x, y)

x 的 y 次幂。

10

math.sqrt(x)

x 的平方根 (x > 0)

三角函数

Python 的 math 模块包含以下执行三角计算的函数:

序号 函数及说明
1

math.acos(x)

此函数返回 x 的反余弦值(以弧度表示)。

2

math.asin(x)

此函数返回 x 的反正弦值(以弧度表示)。

3

math.atan(x)

此函数返回 x 的反正切值(以弧度表示)。

4

math.atan2(y, x)

此函数返回 atan(y / x)(以弧度表示)。

5

math.cos(x)

此函数返回 x 弧度的余弦值。

6

math.sin(x)

此函数返回 x 弧度的正弦值。

7

math.tan(x)

此函数返回 x 弧度的正切值。

8

math.hypot(x, y)

此函数返回欧几里德范数,sqrt(x*x + y*y)。

角度转换函数

以下是 Python math 模块提供的角度转换函数:

序号 函数及说明
1

math.degrees(x)

此函数将给定的角度从弧度转换为度数。

2

math.radians(x)

此函数将给定的角度从度数转换为弧度。

数学常数

Python 的 math 模块定义了以下数学常数:

序号 常数和描述
1

math.pi

表示数学常数 π,其值为 "3.141592..."(精确到可用精度)。

2

math.e

表示数学常数 e,其值为 "2.718281..."(精确到可用精度)。

3

math.tau

表示数学常数 Tau (τ)。它等于圆周与半径之比,等于

4

math.inf

表示正无穷大。负无穷大使用 "−math.inf"

5

math.nan

此常数是一个浮点数“非数字”(NaN)值。其值等效于 float('nan') 的输出。

双曲函数

双曲函数是基于双曲线而不是圆的三角函数的类似物。以下是 Python math 模块的双曲函数:

序号 函数及说明
1

math.acosh(x)

此函数用于计算给定值的反双曲余弦。

2

math.asinh(x)

此函数用于计算给定数字的反双曲正弦。

3

math.atanh(x)

此函数用于计算数字的反双曲正切。

4

math.cosh(x)

此函数用于计算给定值的双曲余弦。

5

math.sinh(x)

此函数用于计算给定数字的双曲正弦。

6

math.tanh(x)

此函数用于计算数字的双曲正切。

特殊函数

以下是 Python math 模块提供的特殊函数:

序号 函数及说明

1

math.erf(x)

此函数返回给定参数的高斯误差函数的值。

2

math.erfc(x)

此函数是误差函数的互补函数。erf(x) 的值等于 1-erf(x)

3

math.gamma(x)

此函数用于计算复数的阶乘。它被定义为除非正整数之外的所有复数。

4

math.lgamma(x)

此函数用于计算 x 处伽马函数绝对值的自然对数。

随机数函数

随机数用于游戏、模拟、测试、安全和隐私应用程序。Python 的 random 模块包含以下函数。

序号 函数及说明
1

random.choice(seq)

来自列表、元组或字符串的随机项。

2

random.randrange([start,] stop [,step])

从 range(start, stop, step) 中随机选择的元素。

3

random.random()

一个随机浮点数 r,使得 0 <= r < 1。

4

random.seed([x])

此函数设置用于生成随机数的整数起始值。在调用任何其他 random 模块函数之前调用此函数。返回 None。

5

random.shuffle(seq)

此函数用于随机化给定序列的项目。

6

random.uniform(a, b)

此函数返回一个随机浮点值 r,使得 a <= r < b。

内置数学函数

以下数学函数内置于 Python 解释器 中,因此您无需从任何模块导入它们。

序号 函数及说明

1

Python abs() 函数

abs() 函数返回 x 的绝对值,即 x 与零之间的正距离。

2

Python max() 函数

max() 函数返回其参数中最大的一个,或来自可迭代对象(列表或元组)的最大数字。

3

Python min() 函数

min() 函数返回其参数中最小的一个,即最接近负无穷大的值,或来自可迭代对象(列表或元组)的最小数字。

4

Python pow() 函数

pow() 函数返回 x 的 y 次幂。它等效于 x**y。

5

Python round() 函数

round() 是 Python 中的内置函数。它返回四舍五入到小数点后 n 位的 x。

6

Python sum() 函数

sum() 函数返回任何可迭代对象(列表或元组)中所有数字项的总和。它有一个可选的 start 参数,默认为 0。如果给出,列表中的数字将添加到 start 值。

广告
© . All rights reserved.