Skip to content

Python 數字:整數、浮點數、數學運算及常用模組

Python 在處理數字方面非常強大且直觀。無論你是進行簡單計算還是複雜的科學分析,Python 都提供了豐富的工具來滿足你的需求。本文將帶你認識 Python 中的各種數字類型、基本運算、常用的數學函數以及隨機數的生成。

🐍 Python 中的數字類型

Python 主要有三種內置的數字類型:整數 (integers)、浮點數 (floating-point numbers) 和複數 (complex numbers)。

整數 (Integers - int)

Python 的整數類型 (int) 非常靈活,它沒有固定的大小限制。這意味著你可以表示非常非常大的整數,記憶體允許的情況下,其大小僅受限於可用記憶體。

為了提高大數字的可讀性,Python 允許使用底線 (_) 作為分隔符,類似於千位分隔符。

python
# 基本整數
a = 10
b = -5
print(f"a = {a}, type: {type(a)}")

# 一個非常大的整數
large_number = 10**100  # 1 後面有 100 個零
print(f"一個非常大的數: {large_number}")

# 使用底線提高可讀性
population = 7_900_000_000
print(f"世界人口約: {population}") # 輸出: 世界人口約: 7900000000 (底線僅為方便閱讀,不影響數值)

浮點數 (Floating-Point - float)

浮點數 (float) 用於表示帶有小數點的數字,或者使用科學記數法表示的數字。它們通常是雙精度浮點數。

python
# 基本浮點數
pi_approx = 3.14159
price = 19.99
print(f"pi_approx = {pi_approx}, type: {type(pi_approx)}")

# 科學記數法
speed_of_light = 2.99792458e8  # 等於 2.99792458 * 10^8
print(f"光速: {speed_of_light}")

small_number = 1.23e-7 # 等於 1.23 * 10^-7
print(f"一個很小的數: {small_number}")

需要注意的是,浮點數運算可能會有效應的精度問題,這是由計算機硬件表示浮點數的方式決定的。

複數 (Complex Numbers - complex)

Python 也支援複數 (complex)。複數由實部 (real part) 和虛部 (imaginary part) 組成,虛部以 jJ 作為後綴。雖然在日常編程中不常用,但在科學和工程計算中非常有用。

python
# 複數
c1 = 3 + 4j
c2 = 2 - 1.5j
print(f"c1 = {c1}, type: {type(c1)}")
print(f"c1 的實部: {c1.real}")
print(f"c1 的虛部: {c1.imag}")

# 複數運算
print(f"c1 + c2 = {c1 + c2}")
print(f"c1 * c2 = {c1 * c2}")

🔢 基本數學運算

Python 支援所有標準的算術運算符:

運算符名稱例子結果
+加法5 + 27
-減法5 - 23
*乘法5 * 210
/除法5 / 22.5
//整數除法5 // 22
%餘數5 % 21
**次方5 ** 225
python
x = 10
y = 3

print(f"{x} + {y} = {x + y}")
print(f"{x} - {y} = {x - y}")
print(f"{x} * {y} = {x * y}")
print(f"{x} / {y} = {x / y}")         # 浮點數除法,結果總是 float
print(f"{x} // {y} = {x // y}")       # 整數除法,結果向小取整
print(f"-10 // {y} = {-10 // y}")     # 對於負數,仍然向小取整 (-3.33... -> -4)
print(f"{x} % {y} = {x % y}")         # 取餘數
print(f"{x} ** {y} = {x ** y}")       # 10 的 3 次方

特別注意整數除法 //:它總是執行除法然後向下取整到最接近的整數。例如,7 // 2 等於 3,而 -7 // 2 等於 -4。普通的除法 / 總會返回一個浮點數。

🔁 range() 函數

range() 是一個內置函數,用於生成一個整數序列。它經常與 for 迴圈一起使用。

range() 可以接受一到三個參數:

  • range(stop): 生成從 0stop-1 的整數。
  • range(start, stop): 生成從 startstop-1 的整數。
  • range(start, stop, step): 生成從 startstop-1 的整數,每一步的間隔為 step
python
# 從 0 到 4 (不包括 5)
for i in range(5):
    print(i, end=" ") # 輸出: 0 1 2 3 4
print()

# 從 2 到 5 (不包括 6)
for i in range(2, 6):
    print(i, end=" ") # 輸出: 2 3 4 5
print()

# 從 0 到 9,間隔為 2
for i in range(0, 10, 2):
    print(i, end=" ") # 輸出: 0 2 4 6 8
print()

🎲 隨機數生成

Python 的 random 模組提供了生成各種隨機數的函數。你需要先 import random 才能使用它們。

  • random.randint(a, b): 返回一個在 ab 之間 (包括 ab) 的隨機整數。
  • random.random(): 返回一個在 0.01.0 之間 (不包括 1.0) 的隨機浮點數。
  • random.uniform(a, b): 返回一個在 ab 之間 (可能包括 ab,取決於浮點數舍入) 的隨機浮點數。
python
import random

# 生成一個 1 到 10 之間的隨機整數
random_int = random.randint(1, 10)
print(f"隨機整數 (1-10): {random_int}")

# 生成一個 0.0 到 1.0 之間的隨機浮點數
random_float = random.random()
print(f"隨機浮點數 (0.0-1.0): {random_float}")

# 生成一個 5.0 到 10.0 之間的隨機浮點數
random_uniform_float = random.uniform(5.0, 10.0)
print(f"隨機浮點數 (5.0-10.0): {random_uniform_float}")

📐 math 模組進階數學運算

對於更複雜的數學運算,例如三角函數、對數、平方根等,Python 提供了 math 模組。你需要 import math 來使用這些函數。

以下是一些常用的 math 模組函數和常數:

函數/常數描述例子 (import math)
math.sqrt(x)返回 x 的平方根 (Square root)math.sqrt(16) (結果: 4.0)
math.pow(x, y)返回 x 的 y 次方 (Power)math.pow(2, 3) (結果: 8.0)
math.floor(x)返回不大於 x 的最大整數 (Floor)math.floor(3.9) (結果: 3)
math.ceil(x)返回不小於 x 的最小整數 (Ceiling)math.ceil(3.1) (結果: 4)
abs(x)返回 x 的絕對值 (Absolute value) (內置函數)abs(-5) (結果: 5)
math.log(x[, base])返回 x 的對數 (Logarithm),預設底為 emath.log(100, 10) (結果: 2.0)
math.log10(x)返回 x 以 10 為底的對數math.log10(100) (結果: 2.0)
math.log2(x)返回 x 以 2 為底的對數math.log2(8) (結果: 3.0)
math.sin(x)返回 x 的正弦值 (Sine),x 為弧度math.sin(math.pi/2) (結果: 1.0)
math.cos(x)返回 x 的餘弦值 (Cosine),x 為弧度math.cos(0) (結果: 1.0)
math.tan(x)返回 x 的正切值 (Tangent),x 為弧度math.tan(math.pi/4) (約 1.0)
math.degrees(x)將弧度 x 轉換為角度math.degrees(math.pi) (結果: 180.0)
math.radians(x)將角度 x 轉換為弧度math.radians(180) (結果: math.pi)
math.pi數學常數 π (約 3.14159)math.pi
math.e數學常數 e (約 2.71828)math.e
math.inf正無窮大 (Positive infinity)math.inf
math.nan非數值 (Not a Number)math.nan
python
import math

# 平方根
print(f"sqrt(25) = {math.sqrt(25)}")

# 次方
print(f"pow(3, 4) = {math.pow(3, 4)}") # 等同於 3**4

# 向下取整和向上取整
print(f"floor(7.8) = {math.floor(7.8)}")
print(f"ceil(7.2) = {math.ceil(7.2)}")

# 絕對值 (這是內置函數,不需要 math 模組)
print(f"abs(-10.5) = {abs(-10.5)}")

# 對數
print(f"log10(1000) = {math.log10(1000)}")
print(f"log(math.e) = {math.log(math.e)}") # 自然對數

# 常數
print(f"Pi (π) = {math.pi}")
print(f"Euler's number (e) = {math.e}")

# 特殊數值
print(f"Infinity: {math.inf}")
print(f"Not a Number: {math.nan}")

# 檢查特殊數值
x = float('inf')
y = float('nan')
print(f"x is infinity? {math.isinf(x)}")
print(f"y is NaN? {math.isnan(y)}")

math.inf 代表正無窮大,-math.inf 代表負無窮大。math.nan (Not a Number) 是一個特殊的浮點數值,用於表示未定義或不可表示的結果,例如 0/0math.sqrt(-1) (在實數範圍內)。

✨ 總結

Python 提供了強大而易用的數字處理能力。從基本整數、浮點數到複數,再到各種數學運算和 math 模組提供的進階函數,Python 幾乎可以滿足你在數字計算方面的所有需求。理解這些基礎知識,將為你後續學習更複雜的數據分析、科學計算等領域打下堅實的基礎。

希望這篇文章能幫助你更好地理解和使用 Python 中的數字!

📚 參考資料

KF Software House