第 1 章 Python 基本用法入門¶
本章的目標是讓你能夠:
- 理解什麼是直譯式程式語言,並能在 Jupyter Notebook 中執行 Python 程式碼。
- 使用變數、基本運算與資料型態(整數、小數、字串、布林值)。
- 撰寫簡單的迴圈與自訂函數,並用來處理數學問題。
- 初步認識 SymPy,了解「符號運算」與「數值運算」的差別。
建議你一邊閱讀、一邊在 Notebook 中動手修改程式碼並重新執行。
1.1 互動式 Python 與 Jupyter Notebook¶
在 Jupyter Notebook 中,每一個灰色區塊稱為一個「程式碼儲存格(code cell)」,你可以在裡面輸入程式碼,然後按下 Shift+Enter 執行。
下面是一個最簡單的 Python 指令:
1 + 1
2
若要讓結果顯示得更明顯,可以使用 print 函數:
print(1 + 1)
print("Hello, Python!")
2 Hello, Python!
a = 5 # 把 5 存到變數 a
b = 3 # 把 3 存到變數 b
c = a + b
print("a =", a)
print("b =", b)
print("a + b =", c)
a = 5 b = 3 a + b = 8
Python 可以處理常見的算術運算:
+加法-減法*乘法/除法(結果為小數)//整數除法(只取商的整數部分)%取餘數**次方
試著執行下面的程式,觀察輸出結果:
x = 10
y = 3
print("x + y =", x + y)
print("x - y =", x - y)
print("x * y =", x * y)
print("x / y =", x / y)
print("x // y =", x // y)
print("x % y =", x % y)
print("x ** y =", x ** y)
x + y = 13 x - y = 7 x * y = 30 x / y = 3.3333333333333335 x // y = 3 x % y = 1 x ** y = 1000
1.3 資料型態:整數、小數、字串與布林值¶
Python 中常見的基本型態:
int:整數(integer),例如5,-2,0。float:浮點數(小數),例如3.14,0.5,-1.0。str:字串(string),一段文字,用引號包起來,例如'hello'或"world"。bool:布林值(boolean),只有True或False兩種。
我們可以用 type() 這個函數來檢查一個值的型態:
n = 7
pi = 3.14159
name = "Alice"
is_student = True
print(n, "的型態是", type(n))
print(pi, "的型態是", type(pi))
print(name, "的型態是", type(name))
print(is_student, "的型態是", type(is_student))
7 的型態是 <class 'int'> 3.14159 的型態是 <class 'float'> Alice 的型態是 <class 'str'> True 的型態是 <class 'bool'>
1.4 比較運算與邏輯運算¶
在數學與程式中,我們常需要比較大小、判斷相等與否:
==是否相等!=是否不相等>大於<小於>=大於等於<=小於等於
這些比較的結果會是一個布林值 True 或 False。
print(3 == 3)
print(3 != 5)
print(2 > 10)
print(2 <= 10)
True True False True
邏輯運算則用來組合多個條件:
and:且(兩個條件都要成立)or:或(至少一個條件成立)not:非(把 True/False 反過來)
例:
age = 18
is_high_school = True
print((age >= 18) and is_high_school)
print((age < 18) or is_high_school)
print(not is_high_school)
True True False
1.5 控制流程:if 判斷¶
數學中常有「若 … 則 …」的敘述,在程式中對應到 if 判斷結構:
x = 5
if x > 0:
print("x 是正數")
elif x == 0:
print("x 是 0")
else:
print("x 是負數")
x 是正數
1.6 迴圈 for:重複計算的力量¶
當我們想要重複計算相似的東西(例如:計算 $1^2+2^2+\cdots+10^2$),就可以使用迴圈:
total = 0
for k in range(1, 11): # 從 1 到 10
total += k**2
print("1^2 + 2^2 + ... + 10^2 =", total)
1^2 + 2^2 + ... + 10^2 = 385
1.7 自訂函數:把數學函數寫成程式¶
在數學中,我們常寫 $f(x)$。在 Python 中,我們可以用 def 來定義一個函數:
def f(x):
return x**2 + 2*x + 1
print(f(0))
print(f(1))
print(f(2))
1 4 9
你可以試著修改函數的定義,例如改成 $f(x) = \sin x$ 或 $f(x) = \frac{1}{x}$,再觀察輸出結果。
1.8 初識 SymPy:符號運算 vs 數值運算¶
SymPy 是 Python 中的「符號運算」套件,它可以讓電腦像人一樣操作代數式,而不是只算出近似數值。
先匯入 SymPy 並建立一個符號變數:
import sympy as sp
sp.init_printing() # 讓輸出更漂亮
x = sp.symbols('x')
expr = x**2 + 2*x + 1
expr
我們可以要求 SymPy 展開或因式分解:
sp.expand((x + 1)**2), sp.factor(x**2 + 2*x + 1)
也可以進行代入與求值:
expr_at_3 = expr.subs(x, 3)
expr_at_pi = expr.subs(x, sp.pi)
expr_at_3, expr_at_pi
big_number = 2**100
big_number
你可以觀察這個數字大約有多少位數,並聯想到指數成長的威力。這在資訊安全(密碼學)、人口成長模型等領域都很重要。
1.10 啟發性例子二:浮點數 vs 精確分數¶
在電腦中,用 float 代表小數時:
0.1 + 0.2
而 SymPy 可以用『有理數』的方式處理:
from sympy import Rational
a = Rational(1, 10) # 1/10
b = Rational(2, 10) # 2/10
a + b
你會看到結果是 3/10,這正是精確的分數表示。這個例子展示了 數值運算 與 符號運算 的差別。
squares = []
for n in range(1, 11):
squares.append(n**2)
squares
也可以試著產生其他數列,例如等差數列 $2, 5, 8, 11, \dots$ 或費波那契數列, 利用程式幫助你觀察、猜測公式,將在後續章節中更深入探討。
1.12 本章小結¶
本章介紹了:
- 如何在 Jupyter Notebook 中執行 Python 程式碼。
- 變數與基本運算、資料型態與比較/邏輯運算。
if判斷、for迴圈、自訂函數等基本程式結構。- SymPy 的初步使用,以及數值運算與符號運算的差別。
接下來的章節將在這些基礎上,進一步用 SymPy 處理代數式、方程、不等式與微積分等內容。
1.13 練習題¶
請在本 Notebook 中新增儲存格,試著完成以下練習:
基本運算與變數
- 建立兩個變數
a與b,分別儲存任意整數,計算並列印:a + b,a - b,a * b,a / b。
- 建立兩個變數
條件判斷
- 寫一個程式,讀入一個變數
x(你可以先直接在程式裡指定一個值), 若x是偶數則顯示「偶數」,否則顯示「奇數」。
- 寫一個程式,讀入一個變數
迴圈與總和
- 利用
for迴圈計算 $1 + 2 + 3 + \cdots + 100$,並列印結果。
- 利用
自訂數學函數
- 定義一個函數
g(x),其內容為 $g(x) = x^3 - 3x$, 計算並列印g(-2), g(0), g(1), g(3)。
- 定義一個函數
SymPy 基礎操作
- 使用 SymPy 建立符號變數
x,定義代數式 $x^2 - 5x + 6$。 - 要求 SymPy 對這個式子進行因式分解,並計算在
x = 2與x = 3時的值。
- 使用 SymPy 建立符號變數