Python 數字:整數、浮點數、數學運算及常用模組
Python 在處理數字方面非常強大且直觀。無論你是進行簡單計算還是複雜的科學分析,Python 都提供了豐富的工具來滿足你的需求。本文將帶你認識 Python 中的各種數字類型、基本運算、常用的數學函數以及隨機數的生成。
🐍 Python 中的數字類型
Python 主要有三種內置的數字類型:整數 (integers)、浮點數 (floating-point numbers) 和複數 (complex numbers)。
整數 (Integers - int
)
Python 的整數類型 (int
) 非常靈活,它沒有固定的大小限制。這意味著你可以表示非常非常大的整數,記憶體允許的情況下,其大小僅受限於可用記憶體。
為了提高大數字的可讀性,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
) 用於表示帶有小數點的數字,或者使用科學記數法表示的數字。它們通常是雙精度浮點數。
# 基本浮點數
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) 組成,虛部以 j
或 J
作為後綴。雖然在日常編程中不常用,但在科學和工程計算中非常有用。
# 複數
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 + 2 | 7 |
- | 減法 | 5 - 2 | 3 |
* | 乘法 | 5 * 2 | 10 |
/ | 除法 | 5 / 2 | 2.5 |
// | 整數除法 | 5 // 2 | 2 |
% | 餘數 | 5 % 2 | 1 |
** | 次方 | 5 ** 2 | 25 |
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)
: 生成從0
到stop-1
的整數。range(start, stop)
: 生成從start
到stop-1
的整數。range(start, stop, step)
: 生成從start
到stop-1
的整數,每一步的間隔為step
。
# 從 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)
: 返回一個在a
和b
之間 (包括a
和b
) 的隨機整數。random.random()
: 返回一個在0.0
和1.0
之間 (不包括1.0
) 的隨機浮點數。random.uniform(a, b)
: 返回一個在a
和b
之間 (可能包括a
或b
,取決於浮點數舍入) 的隨機浮點數。
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),預設底為 e | math.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 |
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/0
或 math.sqrt(-1)
(在實數範圍內)。
✨ 總結
Python 提供了強大而易用的數字處理能力。從基本整數、浮點數到複數,再到各種數學運算和 math
模組提供的進階函數,Python 幾乎可以滿足你在數字計算方面的所有需求。理解這些基礎知識,將為你後續學習更複雜的數據分析、科學計算等領域打下堅實的基礎。
希望這篇文章能幫助你更好地理解和使用 Python 中的數字!