第 1 章 Python 基本用法入門¶

本章的目標是讓你能夠:

  • 理解什麼是直譯式程式語言,並能在 Jupyter Notebook 中執行 Python 程式碼。
  • 使用變數、基本運算與資料型態(整數、小數、字串、布林值)。
  • 撰寫簡單的迴圈與自訂函數,並用來處理數學問題。
  • 初步認識 SymPy,了解「符號運算」與「數值運算」的差別。

建議你一邊閱讀、一邊在 Notebook 中動手修改程式碼並重新執行。

1.1 互動式 Python 與 Jupyter Notebook¶

在 Jupyter Notebook 中,每一個灰色區塊稱為一個「程式碼儲存格(code cell)」,你可以在裡面輸入程式碼,然後按下 Shift+Enter 執行。

下面是一個最簡單的 Python 指令:

In [1]:
1 + 1
Out[1]:
2

若要讓結果顯示得更明顯,可以使用 print 函數:

In [2]:
print(1 + 1)
print("Hello, Python!")
2
Hello, Python!

1.2 變數與基本運算¶

變數(variable) 就是替某個值取一個名稱。數學中常見的 $x, y$ 就可以視為變數。

在 Python 中,我們可以這樣寫:

In [3]:
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 可以處理常見的算術運算:

  • + 加法
  • - 減法
  • * 乘法
  • / 除法(結果為小數)
  • // 整數除法(只取商的整數部分)
  • % 取餘數
  • ** 次方

試著執行下面的程式,觀察輸出結果:

In [4]:
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() 這個函數來檢查一個值的型態:

In [5]:
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。

In [6]:
print(3 == 3)
print(3 != 5)
print(2 > 10)
print(2 <= 10)
True
True
False
True

邏輯運算則用來組合多個條件:

  • and:且(兩個條件都要成立)
  • or:或(至少一個條件成立)
  • not:非(把 True/False 反過來)

例:

In [7]:
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 判斷結構:

In [8]:
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$),就可以使用迴圈:

In [9]:
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 來定義一個函數:

In [10]:
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 並建立一個符號變數:

In [11]:
import sympy as sp
sp.init_printing()  # 讓輸出更漂亮

x = sp.symbols('x')
expr = x**2 + 2*x + 1
expr
Out[11]:
$\displaystyle x^{2} + 2 x + 1$

我們可以要求 SymPy 展開或因式分解:

In [12]:
sp.expand((x + 1)**2), sp.factor(x**2 + 2*x + 1)
Out[12]:
$\displaystyle \left( x^{2} + 2 x + 1, \ \left(x + 1\right)^{2}\right)$

也可以進行代入與求值:

In [13]:
expr_at_3 = expr.subs(x, 3)
expr_at_pi = expr.subs(x, sp.pi)
expr_at_3, expr_at_pi
Out[13]:
$\displaystyle \left( 16, \ 1 + 2 \pi + \pi^{2}\right)$

1.9 啟發性例子一:電腦可以處理我們難以手算的大數¶

思考以下問題:

$2^{100}$ 是多少?人類幾乎不可能手算出來,但電腦卻可以瞬間完成:

In [14]:
big_number = 2**100
big_number
Out[14]:
$\displaystyle 1267650600228229401496703205376$

你可以觀察這個數字大約有多少位數,並聯想到指數成長的威力。這在資訊安全(密碼學)、人口成長模型等領域都很重要。

1.10 啟發性例子二:浮點數 vs 精確分數¶

在電腦中,用 float 代表小數時:

In [15]:
0.1 + 0.2
Out[15]:
$\displaystyle 0.3$

而 SymPy 可以用『有理數』的方式處理:

In [16]:
from sympy import Rational

a = Rational(1, 10)   # 1/10
b = Rational(2, 10)   # 2/10
a + b
Out[16]:
$\displaystyle \frac{3}{10}$

你會看到結果是 3/10,這正是精確的分數表示。這個例子展示了 數值運算 與 符號運算 的差別。

1.11 啟發性例子三:用程式探索數列規律¶

考慮數列:

$1, 4, 9, 16, 25, \dots$

你或許已經知道這是 $n^2$。我們可以用 Python 來產生前幾項,觀察它的行為:

In [17]:
squares = []
for n in range(1, 11):
    squares.append(n**2)

squares
Out[17]:
$\displaystyle \left[ 1, \ 4, \ 9, \ 16, \ 25, \ 36, \ 49, \ 64, \ 81, \ 100\right]$

也可以試著產生其他數列,例如等差數列 $2, 5, 8, 11, \dots$ 或費波那契數列, 利用程式幫助你觀察、猜測公式,將在後續章節中更深入探討。

1.12 本章小結¶

本章介紹了:

  • 如何在 Jupyter Notebook 中執行 Python 程式碼。
  • 變數與基本運算、資料型態與比較/邏輯運算。
  • if 判斷、for 迴圈、自訂函數等基本程式結構。
  • SymPy 的初步使用,以及數值運算與符號運算的差別。

接下來的章節將在這些基礎上,進一步用 SymPy 處理代數式、方程、不等式與微積分等內容。

1.13 練習題¶

請在本 Notebook 中新增儲存格,試著完成以下練習:

  1. 基本運算與變數

    • 建立兩個變數 a 與 b,分別儲存任意整數,計算並列印:a + b, a - b, a * b, a / b。
  2. 條件判斷

    • 寫一個程式,讀入一個變數 x(你可以先直接在程式裡指定一個值), 若 x 是偶數則顯示「偶數」,否則顯示「奇數」。
  3. 迴圈與總和

    • 利用 for 迴圈計算 $1 + 2 + 3 + \cdots + 100$,並列印結果。
  4. 自訂數學函數

    • 定義一個函數 g(x),其內容為 $g(x) = x^3 - 3x$, 計算並列印 g(-2), g(0), g(1), g(3)。
  5. SymPy 基礎操作

    • 使用 SymPy 建立符號變數 x,定義代數式 $x^2 - 5x + 6$。
    • 要求 SymPy 對這個式子進行因式分解,並計算在 x = 2 與 x = 3 時的值。
回首頁