[Python] 数字类型的操作

内置的数值运算操作符

Python 提供了 9 个基本的数值运算操作符。这些操作符由 Python 解释器直接提供,不需要引用标准或第三方函数库,也叫做内置操作符。

操作符 描述
x + y x 与 y 之和
x - y x 与 y 之差
x * y x 与 y 之积
x / y x 与 y 之商
x // y x 与 y 之整数商,即不大于 xy 之商的最大整数
x % y x 与 y 之商的余数,也称为模运算
-x x 的负值,即 x * (-1)
+x x 本身
x ** y x的y次幂,即 xy

9个操作符与数学习惯一致,运算结果也符合数学意义。操作符运算的结果可能改变数字类型,3种数字类型之间存在一种逐渐扩展的关系,具体如下:
整数 -> 浮点数 -> 复数

基于上述扩展关系,数字类型之间相互运算所生成的结果是”更宽“的类型,基本规则如下:
(1) 整数之间运算,如果数学意义上的结果是小数,那么结果是浮点数
(2) 整数之间运算,如果数学意义上的结果是整数,那么结果是整数
(3) 整数和浮点数混合运算,输出结果是浮点数
(4) 整数或浮点数与复数运算,输出结果是复数

print(100 / 3)

33.333333333333336

print(100 // 3)

33

print(123 + 4.0 )

127.0

print(10.0 - 1 + 2j)        # 等价于 (10.0 - 1)+ 2j

(9+2j)

所有的二元数学操作(+、-、、/、//、%、** )都有与之对应的增强赋值操作符(+=、-=、=、/=、//=、%=、 **=)。如果用 op表示这些二元数学操作符,则下面两个赋值操作等价,注意, op 和二元操作符之间没有空格:
x op= y
等价于
x = x op y
增强赋值操作符获得的结果写入变量 x 中,简化了代码表达,例如:

x=3.0
x **= 3     # 等价于 x = x ** 3
print(x)

27.0

内置的数值运算函数

Python 解释器提供了一些内置函数。其中,有 6 个函数与数值运算相关。

函数 描述
abs(x) x 的绝对值
divmod(x,y) (x//y,x%y),输出为二元组形式(也称为元组类型)
pow(x,y[,z]) (x**y)%z,[…]表示该参数可以省略,即 pow(x,y) ,它与 xy 相同
round(x[, ndigits]) x 四舍五入,保留 ndigits 位小数。round(x) 返回四舍五入的整数值
max(x1,x2,…,xn) x1,x2,…,xn 的最大值,n 没有限定
min(x1,x2,…,xn) x1,x2,…,xn 的最小值,n 没有限定

abs() 可以计算复数的绝对值。复数的绝对值是二维坐标系中复数位置到坐标原点的长度。例如:

a=abs(-3 + 4j)
print(a)

5.0

pow() 函数第三个参数 z 是可选的,使用该参数时,模运算与幂运算同时进行,速度很快。例如,求 33999 次幂结果的最后 4 位。从 Python 语法角度,**pow(3,pow(3,999))%10000 ** (请不要在计算机中尝试该语句)和 pow(3,pow(3,999),10000) 都能完成计算需求。但是,前者是先求幂运算结果再进行模运算,由于幂运算结果数值巨大,上述计算在一般计算机上无法完成;而第二条语句则在幂运算同时进行模运算,可以很快计算出结果。例如:

a=pow(3,pow(3,999),10000)       # 幂运算和模运算同时进行,速度快
print(a)

4587

模运算
模运算(%)在编程中十分常用,主要应用于具有周期规律的场景。例如,一个星期 7天,用 day 代表日期,则 day%7 可以表示星期;对于一个整数 nn%2 的取值是 0 或者 1,可以判断整数 n d 奇偶。本质上,整数的模运算 n%m 能够将整数 n 映射到 [0, m-1] 的区间中。

内置的数字类型转换函数

数值运算操作符可以隐式地转换输出结果的数字类型,例如,两个整数采用运算符 “/” 的除法将可能输出浮点数结果。此外,通过内置的数字类型转换函数可以显式地在数字类型之间进行转换。

函数 描述
int(x) x 转换为整数,x 可以是浮点数或字符串
float(x) 返回整数 x 或者字符串 x 所对应的浮点数类型
complex(re[, im]) 生成一个复数,实部为 re,虚部为 imre 可以是整数、浮点数或字符串,im 可以是整数或浮点数但不能为字符串

例如:

a=int(10.99)
print(a)

10

b=complex(10.99)
print(b)

(10.99+0j)

c=float(10 + 99j)	# 解释器会报 TypeError 错误,并给出该错误的基本描述
print(c)

Traceback (most recent call last):
File “D:\pythonProject\venv\src\test.py”, line 1, in <module>
c=float(10 + 99j)
TypeError: float() argument must be a string or a real number, not ‘complex’

d=float((10 + 99j).imag)
print(d)

99.0

这次的分享就到这里啦,要继续加油哦~

猜你喜欢

转载自blog.csdn.net/weixin_62511863/article/details/124366527