内置的数值运算函数
函数 | 描述 |
---|---|
abs(x) | x的绝对值 |
divmod(x,y) | (x//y,x%y),输出为二元组形式(也成为元组类型) |
pow(x,y[,z]) | (xy)%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()可以计算复数的绝对值。复数的绝对值是二维坐标系中复数位置到坐标原点的长度。
>>> abs(-3+4j)
5.0
pow()函数第三个参数z是可选的,使用该参数时,模运算与幂运算同时进行,速度很快。例如,求3的3999次幂结果的最后4位。从Python语法角度,pow(3,pow(3,999))%10000(不要在计算机中尝试该语句)和pow(3,pow(3,999),10000)都能完成计算需求。但是,前者是先求幂运算结果在进行模运算,由于幂运算结果数值巨大,上述计算在一般计算机上无法完成;而第二条语句则在幂运算同时进行模运算,可以很快计算出结果。pow()函数第三个参数z这个特点在运算加解密算法和科学计算中十分重要。
内置的数字类型转换函数
函数 | 描述 |
---|---|
int() | 将x转换为整数,x可以是浮点数或字符串 |
float() | 返回浮点数x或者字符串x所对应的整数类型 |
complex() | 生成一个复数,实部为re,虚部为im,re可以是整数、浮点数或字符串,im可以是整数或浮点数但不能为字符串 |
数值运算操作符可以隐式地转换输出结果的数字类型,例如,两个整数采用运算符“/”的除法将可能输出浮点数结果。此外,通过内置的数字类型转换函数可以显示地在数字类型之间进行转换。
浮点数类型转换为整数类型时,小数部分会被舍弃(不使用四舍五入),复数不能直接转换为其他数字类型,可以通过.real和.imag将复数的实部或虚部分别转换。
>>> int(10.99)
10
>>> complex(10.99)
(10.99+0j)
>>> float(10+99j)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
float(10+99j)
TypeError: can't convert complex to float
>>> float((10+99j).imag)
99.0
实例
一年365天,以第1天的能力值为基数,记为1.0,当好好学习时能力值相比前一天提高1‰,当没有学习时能力值相比前一天下降1‰。每天努力和每天放任,一年下来的能力值相差多少呢?
import math
dayup = math.pow((1.0 + 0.001), 365) # 每天提高0.001
daydown = math.pow((1.0 - 0.001), 365) # 每天荒废0.001
print("向上: %.2f, 向下: %.2f."%(dayup, daydown))
运行结果如下:
向上: 1.44, 向下: 0.69.
一年365天,以第1天的能力值为基数,记为1.0,当好好学习时能力值相比前一天提高5‰,当没有学习时能力值相比前一天下降5‰。每天努力和每天放任,一年下来的能力值相差多少呢?
import math
dayup = math.pow((1.0 + 0.005), 365) # 每天提高0.005
daydown = math.pow((1.0 - 0.005), 365) # 每天荒废0.005
print("向上: %.2f, 向下: %.2f."%(dayup, daydown))
运行结果如下:
向上: 6.17, 向下: 0.16.
一年365天,以第1天的能力值为基数,记为1.0,当好好学习时能力值相比前一天提高1%,当没有学习时能力值相比前一天下降1%。每天努力和每天放任,一年下来的能力值相差多少呢?
import math
dayfactor = 0.01
dayup = math.pow((1.0 + dayfactor), 365) # 提高dayfactor
daydown = math.pow((1.0 - dayfactor), 365) # 放任dayfactor
print("向上: {:.2f}, 向下: {:.2f}.".format(dayup, daydown))
运行结果如下:
向上: 37.78, 向下: 0.03.
一年365天,以第1天的能力值为基数,记为1.0,当如果每个工作日都很努力,可以提高1%,仅在周末放任一下下降1%。一年下来的能力值相差多少呢?
dayup, dayfactor = 1.0, 0.01
for i in range(365):
if i % 7 not in [6, 0]:
dayup = dayup * (1 + dayfactor)
else:
dayup = dayup * (1 - dayfactor)
print("向上5 天向下2 天的力量: {:.2f}.".format(dayup))
运行结果如下:
向上5 天向下2 天的力量: 4.63.