数学计算
本篇教学会介绍“数学计算”的内建函数,许多需要数学运算的程序都会需要使用这些函数,是常见的内建函数。
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
常用操作方法
| 方法 | 参数 | 说明 |
|---|---|---|
| int() | x | 将 x 转换成整数。 |
| float() | x | 将 x 转换成浮点数。 |
| abs() | x | 回传 x 的绝对值。 |
| divmod() | x, y | 回传 x 除以 y 的商和余数。 |
| max() | iter | 回传可迭代对象 iter 里的最大值。 |
| min() | iter | 回传可迭代对象 iter 里的最小值。 |
| pow() | x, y, z | 回传“x 的 y 次方”或“x 的 y 次方除以 z 的余数”。 |
| round() | x, y | 回传四舍五入后的 x,y 表示四舍五入的小数点位数。 |
| sum() | iter, y | 回传串列或 tuple 的数值与 y 的加总。 |
| complex | x, y | 回传“x + yj”的复数形式。 |
| bool() | x | 将参数 x 转变成布尔值 False 或 True。 |
int(x, base)
int(x) 可以将数字或者是字串的参数,转换为“整数”的型别,如果数字有小数点,会无条件舍去小数点的数字,如果 x 为空,则返回 0,如果是 True 和 False 则会转换为 1 和 0。
a = int('123')
b = int(123.999)
c = int()
d = int(True)
e = int(False)
print(a) # 123
print(b) # 123
print(c) # 0
print(d) # 1
print(e) # 0
int(x, base) 后方 base 默认为 10 进位,设定为 base=8 为八进制整数,base=2 为二进制整数,base=16 则是十六进制整数。
a = int('123')
b = int('123', base=8)
c = int('123', base=16)
print(a) # 123
print(b) # 83 123 等於 83 的八進位
print(c) # 291 123 等於 291 的十六進位
float(x)
float(x) 可以将整数或者是字串的参数,转换为“浮点数”的型别 ( 带有小数点的数字 ),如果数字为整数,会自动在后方加上“.0”,如果 x 为空,则返回 0.0,如果是 True 和 False 则会转换为 1.0 和 0.0。
a = float('123')
b = float(123)
c = float()
d = int(True)
e = int(False)
print(a) # 123.0
print(b) # 123.0
print(c) # 0.0
print(d) # 1.0
print(e) # 0.0
如果要在 Python 里表现“无穷大”或“NaN ( 非数字 )”的数值,可以使用“float(inf)”或“float(nan)”的做法。
a = float('inf')
b = float('-inf')
c = float('nan')
print(a) # inf 正無窮大
print(b) # -inf 負無窮大
print(c) # nan 正無窮大
abs(x)
abs(x) 可以回传 x 的“绝对值”。
a = abs(-123)
print(a) # 123
divmod(x, y)
divmod(x, y) 会回传一个内容为“( x//y, x%y ) 的 tuple”( x 除以 y 的商和余数 )。
a = divmod(5,3)
b = divmod(9,2)
print(a) # (1, 2)
print(b) # (4, 1)
max(iter)
max(iter) 会回传一个可迭代对象 ( 字串、tuple、串列 ) 中的“最大值”。
a = max('100200300')
b = max([100,200,300])
c = max((100,200,300))
print(a) # 3 ( 因為字串拆開後只有 0 1 2 3 )
print(b) # 300
print(c) # 300
min(iter)
min(iter) 会回传一个可迭代对象 ( 字串、tuple、串列 ) 中的“最小值”。
a = min('100200300')
b = min([100,200,300])
c = min((100,200,300))
print(a) # 0 ( 因為字串拆開後只有 0 1 2 3 )
print(b) # 100
print(c) # 100
pow(x, y, z)
使用 pow(x, y) 会回传“x 的 y 次方”,使用 pow(x, y, z) 会回传“x 的 y 次方除以 z 的余数”。
a = pow(2, 3)
b = pow(2, 3, 3)
print(a) # 8 ( 2 的 3 次方 )
print(b) # 2 ( 8 除以 3 的餘數 )
round(x, y)
round(x, y) 会回传“四舍五入后的 x,y 表示四舍五入的小数点位数”,如果不指定 y 则表示四舍五入后的结果为整数。
a = round(3.14159)
b = round(3.14159, 3)
print(a) # 3
print(b) # 3.142
不过需要特别注意的是,当遇到 .5 的数值时容易出现问题,因为 .5 的数字其实是 .44444444X 或 .5000000X 之类的数字,这时使用 round() 会发生预期外的状况。
print(round(1.5)) # 2
print(round(2.5)) # 2 ( 因為 2.5 不是真正的 2.5 )
print(round(3.5)) # 4
print(round(4.5)) # 4 ( 因為 4.5 不是真正的 4.5 )
print(round(5.5)) # 6
sum(iter, y)
sum(iter, y) 会回传“串列或 tuple 的数值与 y 的加总”,如果不指定 y 则 y 为 0。
a = sum([1,2,3,4])
b = sum((1,2,3,4))
c = sum((1,2,3,4), 5)
print(a) # 10
print(b) # 10
print(c) # 15 ( 最後再加上 5 )
complex(x, y)
complex(x, y) 会回传“x + yj”的复数形式,如果 x 是数字,需要加上数字 y,如果 x 是字串,则不需要 y ( 参考:复数 )。
a = complex(1, 2)
print(a) # (1+2j)
bool(x)
bool(x) 可以将参数 x 转变成布尔值 False 或 True,如果内容是 0 或空值就会是 False,反之其他内容就会是 True。
a = bool(1)
b = bool(0)
c = bool()
d = bool(999)
e = bool('hello')
f = bool([0])
g = bool([])
print(a) # True
print(b) # False
print(c) # False
print(d) # True
print(e) # True
print(f) # True ( 因為串列有值 )
print(g) # False ( 因為串列也為空 )
微信扫码关注
抖音扫码关注