iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
Software Development

跟著 OXXO 一起學 Python系列 第 11

( Day 6.3 ) Python 內建函式 ( 數學計算 )

  • 分享至 

  • xImage
  •  

本篇教學會介紹「數學計算」的內建函式,許多需要數學運算的程式都會需要使用這些函式,是常見的內建函式。

原文參考:內建函式 ( 數學計算 )

本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )

常用操作方法 {a0}

方法 參數 說明
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  ( 因為串列也為空 )

更多教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我有個超過一千篇教學的 STEAM 教育學習網,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 6.2 ) Python 運算子 operator
下一篇
( Day 7.1 ) Python 文字與字串 string
系列文
跟著 OXXO 一起學 Python101
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言