Python 數字 (Number)

Python 支援多種數字型別:整數 (int)、浮點數 (float) 和複數 (complex)。

整數 int

整數是沒有小數點的數字,可以是正數、負數或零:

a = 10
b = -5
c = 0

print(type(a))  # <class 'int'>

Python 的整數沒有大小限制,可以處理非常大的數字:

big_number = 123456789012345678901234567890
print(big_number)

不同進制表示

# 二進制(0b 開頭)
binary = 0b1010
print(binary)  # 10

# 八進制(0o 開頭)
octal = 0o17
print(octal)  # 15

# 十六進制(0x 開頭)
hexadecimal = 0xFF
print(hexadecimal)  # 255

浮點數 float

浮點數是有小數點的數字:

a = 3.14
b = -0.5
c = 2.0

print(type(a))  # <class 'float'>

科學記號

a = 1.5e3   # 1.5 × 10³ = 1500.0
b = 2.5e-2  # 2.5 × 10⁻² = 0.025

print(a)  # 1500.0
print(b)  # 0.025

浮點數精度問題

浮點數在電腦中是以二進制儲存,某些十進制小數無法精確表示:

print(0.1 + 0.2)  # 0.30000000000000004
print(0.1 + 0.2 == 0.3)  # False

如果需要精確的小數計算,可以使用 decimal 模組:

from decimal import Decimal

a = Decimal('0.1')
b = Decimal('0.2')
print(a + b)  # 0.3

複數 complex

複數由實部和虛部組成,虛部用 j 表示:

a = 3 + 4j
print(type(a))  # <class 'complex'>
print(a.real)   # 3.0(實部)
print(a.imag)   # 4.0(虛部)

數字運算

a = 10
b = 3

print(a + b)   # 13(加法)
print(a - b)   # 7(減法)
print(a * b)   # 30(乘法)
print(a / b)   # 3.333...(除法,結果是 float)
print(a // b)  # 3(整數除法)
print(a % b)   # 1(取餘數)
print(a ** b)  # 1000(次方)

數學函數

內建函數

print(abs(-5))      # 5(絕對值)
print(round(3.7))   # 4(四捨五入)
print(round(3.14159, 2))  # 3.14(四捨五入到小數第 2 位)
print(pow(2, 3))    # 8(次方,等同於 2 ** 3)
print(max(1, 5, 3)) # 5(最大值)
print(min(1, 5, 3)) # 1(最小值)

math 模組

import math

print(math.sqrt(16))    # 4.0(平方根)
print(math.ceil(3.2))   # 4(無條件進位)
print(math.floor(3.8))  # 3(無條件捨去)
print(math.pi)          # 3.141592653589793
print(math.e)           # 2.718281828459045
print(math.log(10))     # 2.302...(自然對數)
print(math.log10(100))  # 2.0(以 10 為底的對數)
print(math.sin(math.pi / 2))  # 1.0

型別轉換

# 轉換為整數
print(int(3.7))     # 3(小數部分直接捨去)
print(int("42"))    # 42
print(int("10", 2)) # 2(將二進制字串轉為整數)

# 轉換為浮點數
print(float(10))    # 10.0
print(float("3.14")) # 3.14

# 轉換為複數
print(complex(3, 4))  # (3+4j)

隨機數

import random

# 隨機整數
print(random.randint(1, 10))  # 1 到 10 之間的隨機整數

# 隨機浮點數
print(random.random())  # 0 到 1 之間的隨機浮點數
print(random.uniform(1, 10))  # 1 到 10 之間的隨機浮點數

# 從序列中隨機選擇
fruits = ["apple", "banana", "orange"]
print(random.choice(fruits))