內建函式 ( 數學計算 )
本篇教學會介紹「數學計算」的內建函式,許多需要數學運算的程式都會需要使用這些函式,是常見的內建函式。
本篇使用的 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 ( 因為串列也為空 )
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~