Python 數字與運算子

Python 數字與運算子(Numbers and Operators)

這篇 Python 運算子教學將帶你認識 Python 的數字型別與各種運算子。Python 的數字主要有兩種:整數 int 與浮點數 float,搭配算術、比較、邏輯三類運算子,就能處理絕大多數的數值運算。

算術運算子

運算子說明範例結果
+加法7 + 29
-減法7 - 25
*乘法7 * 214
/除法(結果一定是 float)7 / 23.5
//整數除法(無條件捨去)7 // 23
%取餘數7 % 21
**次方7 ** 249
print(7 / 2)    # 除法永遠回傳 float
print(7 // 2)   # 整數除法
print(7 % 2)    # 餘數,常用於判斷奇偶數
print(2 ** 10)  # 2 的 10 次方

執行輸出:

3.5
3
1
1024

注意:7 / 2 即使整除也會回傳 float(8 / 24.0 不是 4),需要整數結果請用 //

比較運算子

比較運算的結果是布林值 TrueFalse

運算子說明範例結果
==等於5 == 5True
!=不等於5 != 3True
> / <大於 / 小於5 > 3True
>= / <=大於等於 / 小於等於5 <= 3False

Python 還支援數學式的串連比較:

age = 25
print(18 <= age < 65)   # 等同於 18 <= age and age < 65

執行輸出:

True

邏輯運算子

運算子說明範例結果
and兩者皆真才為真True and FalseFalse
or任一為真即為真True or FalseTrue
not真假反轉not TrueFalse

浮點數精度陷阱

這是每個 Python 初學者都會撞到的問題:

print(0.1 + 0.2)
print(0.1 + 0.2 == 0.3)

執行輸出:

0.30000000000000004
False

這不是 Python 的 bug,而是電腦用二進位儲存小數的先天限制(所有語言都一樣)。需要精確小數運算(例如金額計算)時,使用標準函式庫的 Decimal

from decimal import Decimal

print(Decimal("0.1") + Decimal("0.2"))

執行輸出:

0.3

常見錯誤

1. ZeroDivisionError: division by zero

除數為 0。除法運算前先確認除數不為 0,特別是除數來自使用者輸入或計算結果時。

2. TypeError: unsupported operand type(s)

不同型別混算,最常見的是字串與數字相加("100" + 5)。先用 int()float() 把字串轉成數字再運算。

3. 用 == 比較浮點數

如上面的範例,0.1 + 0.2 == 0.3False。比較浮點數請改用 math.isclose(0.1 + 0.2, 0.3),或使用 Decimal

總結

Python 算術運算子中最需要記住的是:/ 永遠回傳 float、// 才是整數除法、** 是次方;比較運算可以串連寫;浮點數有精度限制,金額運算用 Decimal。下一篇我們進入 Python 字串。

延伸閱讀