Python 互動式教學網站

一個為初學者設計的實作學習平台

歡迎來到 Python 學習之旅!

🔊 先聽聽看語音摘要,大致了解這個課程的內容 👂

或是點擊上方的導覽列按鈕,選擇一個主題開始您的學習。每個單元都包含詳細說明、程式碼範例和有趣的互動練習。

🎯 完成最後一個主題「綜合練習」後,別忘了填寫小問卷 📝~你的回饋可以讓這門課從「不錯喔」變成「超讚!」🔥 一起讓它變得更棒吧!🙌

歡迎圖片

變數 (Variables)

字串 (String)

字串是用來表示文字資料的型別,必須用單引號 ' ' 或雙引號 " " 包起來。你可以對字串進行串接、複製或擷取部分內容。

# 範例 1: 建立字串
name = "小明"
greeting = '你好'
print(name)
print(greeting)
# 範例 2: 字串串接
text1 = "Python "
text2 = "真有趣"
message = text1 + text2
print(message)
# 範例 3: f-string 格式化
age = 10
profile = f"我是{name},今年{age}歲。"
print(profile)

練習 1: 建立一個名為 `city` 的變數,並賦值為 "台北"。

練習 2: 將 "Hello" 和 "World" 兩個字串串接起來,並用 `print` 輸出。

練習 3: 建立變數 `fruit = "蘋果"`,並使用 f-string 輸出 "我喜歡吃蘋果"。

整數 (Integer) 與 浮點數 (Float)

整數 (int) 是沒有小數點的數字,例如 10-5浮點數 (float) 是帶有小數點的數字,例如 3.14-0.5。它們可以用來進行數學運算。

# 範例 1: 整數運算
a = 10
b = 5
print(a + b) # 加
print(a * b) # 乘
# 範例 2: 浮點數運算
pi = 3.14
radius = 5.0
area = pi * (radius ** 2)
print(area)
# 範例 3: 型別轉換
num_str = "123"
num_int = int(num_str)
result = num_int + 100
print(result)

練習 1: 建立一個整數變數 `x` 等於 100,另一個 `y` 等於 50,並將它們相減後印出。

練習 2: 建立一個浮點數變數 `price` 為 79.9,`tax` 為 1.05,計算含稅價格並印出。

練習 3: 將浮點數 `55.66` 轉換成整數並印出。

布林值 (Boolean)

布林值只有兩種可能:True (真) 或 False (假)。它通常用在條件判斷中,來決定程式的執行流程。

# 範例 1: 基本布林值
is_sunny = True
is_raining = False
print(is_sunny)
# 範例 2: 比較運算
score = 85
pass_exam = score >= 60
print(pass_exam)
# 範例 3: 邏輯運算
has_ticket = True
has_time = False
can_watch_movie = has_ticket and has_time
print(can_watch_movie)

練習 1: 建立一個變數 `is_adult`,並將其值設為 `True`。

練習 2: 判斷 `100` 是否大於 `99`,並將結果印出。

練習 3: 判斷 `5 == 5` 或 `5 > 6` 是否成立,並印出結果。

資料結構 (Data Structures)

列表 (List)

列表是 Python 中最常用的資料結構,用中括號 [ ] 表示。它可以存放任意型別的資料,並且是有順序、可變動的。你可以新增、刪除、修改、查詢列表中的元素。

# 範例 1: 建立與存取
fruits = ["蘋果", "香蕉", "橘子"]
print(fruits[0]) # 存取第一個
print(fruits[-1]) # 存取最後一個
# 範例 2: 新增與修改
fruits.append("葡萄") # 新增
fruits[1] = "鳳梨" # 修改
print(fruits)
# 範例 3: 刪除元素
del fruits[2] # 刪除第三個
popped_fruit = fruits.pop() # 移除並回傳最後一個
print(popped_fruit)
print(fruits)

練習 1: 建立一個包含數字 1, 2, 3 的列表,名為 `numbers`。

練習 2: 在 `numbers` 列表的尾端新增數字 4。

練習 3: 將 `numbers` 列表的第一個元素(索引值為0)改為 10。

字典 (Dictionary)

字典使用大括號 { } 表示,它儲存的是「鍵-值」(key-value) 配對。每個「鍵」都是獨一無二的,並對應到一個「值」。字典是無順序、可變動的,適合用來儲存有關聯性的資料。

# 範例 1: 建立與存取
person = {"name": "小華", "age": 15}
print(person["name"]) # 用 key 存取 value
# 範例 2: 新增與修改
person["city"] = "高雄" # 新增 key-value
person["age"] = 16 # 修改 value
print(person)
# 範例 3: 刪除與取得所有鍵
del person["city"]
print(person.keys()) # 取得所有 keys
print(person.values()) # 取得所有 values

練習 1: 建立一個字典 `product`,包含鍵 "name" (值為 "筆電") 和 "price" (值為 30000)。

練習 2: 在 `product` 字典中新增一個鍵 "brand",值為 "ACER"。

練習 3: 印出 `product` 字典中 "price" 的值。

元組 (Tuple)

元組使用小括號 ( ) 表示,它和列表非常相似,都是有順序的。最大的差別在於:元組是「不可變動」(immutable) 的。一旦建立,就不能新增、修改或刪除其中的元素。適合用來儲存不希望被意外修改的資料。

# 範例 1: 建立與存取
coordinates = (121, 25) # 經緯度
print(coordinates[0])
# 範例 2: 不可變動性
# 下面這行會產生錯誤!
# coordinates[0] = 122 
print("元組無法被修改")
# 範例 3: 單一元素的元組
# 注意逗號是必須的
single_tuple = (1,) 
print(type(single_tuple))

練習 1: 建立一個元組 `rgb`,包含三個值 255, 0, 0。

練習 2: 印出 `rgb` 元組的第二個元素。

練習 3: 建立一個只包含 "apple" 字串的元組 `my_fruit`。

集合 (Set)

集合也使用大括號 { },但它只儲存「值」,不儲存「鍵」。集合最大的特性是:裡面的元素都是獨一無二的,不會重複,而且是無順序的。常用來移除重複資料或進行數學上的集合運算(如聯集、交集)。

# 範例 1: 建立集合 (重複會被移除)
numbers = {1, 2, 3, 2, 1}
print(numbers) # 結果會是 {1, 2, 3}
# 範例 2: 新增與移除
numbers.add(4)
numbers.remove(2)
print(numbers)
# 範例 3: 集合運算
set_a = {1, 2, 3}
set_b = {3, 4, 5}
print(set_a | set_b) # 聯集
print(set_a & set_b) # 交集

練習 1: 從列表 `[1, 5, 2, 5, 1]` 建立一個集合 `unique_nums`。

練習 2: 在集合 `tags = {'python', 'web'}` 中新增 'django'。

練習 3: 找出 `s1 = {1,2,3}` 和 `s2 = {3,4,5}` 的交集。

流程控制 (Flow Control)

條件判斷 (if, elif, else)

條件判斷讓我們可以根據不同的條件執行不同的程式碼區塊。if 是判斷的起點,如果條件成立就執行;elif (else if) 是在前一個條件不成立時,接著判斷的下一個條件;else 是在所有條件都不成立時執行的區塊。

# 範例 1: if-else
age = 20
if age >= 18:
    print("是成年人")
else:
    print("是未成年人")
# 範例 2: if-elif-else
score = 85
if score >= 90:
    print("優等")
elif score >= 60:
    print("及格")
else:
    print("不及格")
# 範例 3: 巢狀 if
is_vip = True
order_amount = 500
if order_amount > 300:
    if is_vip:
        print("VIP 顧客免運費")
    else:
        print("訂單滿 300,享運費半價")

練習 1: 變數 `temp = 30`。如果溫度大於 28 度,印出 "好熱"。

練習 2: 變數 `money = 40`。如果 money 大於等於 50,印出 "可以買便當",否則印出 "錢不夠"。

練習 3: `num = 0`。判斷 num 是正數、負數還是零。

For 迴圈

For 迴圈用於「遍歷」一個序列(例如列表、元組、字串)中的每一個元素。它會依序取出序列中的項目,並執行指定的程式碼區塊,直到所有項目都處理完畢。

# 範例 1: 遍歷列表
fruits = ["蘋果", "香蕉", "橘子"]
for fruit in fruits:
    print(f"我喜歡 {fruit}")
# 範例 2: 使用 range()
# 印出 0, 1, 2, 3, 4
for i in range(5):
    print(i)
# 範例 3: 遍歷字串
for char in "Hello":
    print(char)

練習 1: 使用 for 迴圈印出列表 `[10, 20, 30]` 中的每一個數字。

練習 2: 使用 for 迴圈和 `range()` 印出 3 次 "Python"。

練習 3: 計算並印出 1 到 5 的總和。

While 迴圈

While 迴圈會在「條件為真」(True) 的情況下,重複執行一個程式碼區塊。每次執行前,它都會檢查一次條件。如果條件變為「假」(False),迴圈就會停止。要小心避免寫出條件永遠為真的「無窮迴圈」。

# 範例 1: 基本 while 迴圈
count = 0
while count < 3:
    print(f"計數: {count}")
    count = count + 1
# 範例 2: break 中斷迴圈
n = 5
while True: # 無窮迴圈
    print(n)
    n = n - 1
    if n == 0:
        break # 當 n=0 時跳出
# 範例 3: continue 跳過此次
i = 0
while i < 5:
    i += 1
    if i == 3:
        continue # 當 i=3 時跳過 print
    print(i)

練習 1: 使用 while 迴圈印出從 1 到 3 的數字。

練習 2: 變數 `score = 10`。當 score 小於 15 時,每次將 score 加 2 並印出。

練習 3: 從 5 開始倒數,當數字數到 1 時,印出 "發射!" 並結束迴圈。

函式 (Functions)

定義函式 (def)

函式是一段可以重複使用的程式碼區塊。使用 def 關鍵字來定義一個函式,可以為它命名,並設定它需要接收的參數。定義好的函式可以被重複呼叫,提高程式碼的重用性和組織性。

# 範例 1: 無參數函式
def say_hello():
    print("Hello, Python!")

say_hello() # 呼叫函式
# 範例 2: 有參數函式
def add(a, b):
    print(a + b)

add(3, 5)
add(10, 20)
# 範例 3: 有回傳值的函式
def multiply(x, y):
    return x * y

result = multiply(4, 6)
print(result)

練習 1: 定義一個名為 `show_my_name` 的函式,執行時會印出 "我的名字是小華"。

練習 2: 定義一個函式 `greet(name)`,可以接收一個名字,並印出 "你好, [名字]"。

練習 3: 定義一個函式 `get_area(width, height)`,它會計算並回傳矩形的面積。

內建函式 (Built-in)

Python 提供了許多「內建」的函式,讓我們不需要自己定義就能直接使用。這些函式涵蓋了各種常用功能,例如型別轉換 (int(), str())、數學計算 (sum(), abs())、序列操作 (len(), max()) 等。

# 範例 1: len() 和 sum()
numbers = [1, 2, 3, 4, 5]
print(len(numbers)) # 取得長度
print(sum(numbers)) # 計算總和
# 範例 2: max() 和 min()
scores = [98, 67, 88, 100]
print(max(scores)) # 取得最大值
print(min(scores)) # 取得最小值
# 範例 3: sorted()
# 回傳一個新的已排序列表
sorted_scores = sorted(scores)
print(sorted_scores)
print(scores) # 原列表不變

練習 1: 使用 `len()` 函式,計算字串 "welcome" 的長度並印出。

練習 2: 使用 `sum()` 函式,計算列表 `[10, 20, 30, 40]` 的總和。

練習 3: 使用 `max()` 找出 `[1, 99, 35, 78]` 中的最大值。

Lambda 函式

Lambda 函式是一種小型的、匿名的函式。它使用 lambda 關鍵字建立,語法是 lambda arguments: expression。它可以在任何需要函式物件的地方使用,特別適合用在需要一個簡單、一次性函式的場合,讓程式碼更簡潔。

# 範例 1: 基本 lambda
add = lambda a, b: a + b
print(add(5, 3))
# 範例 2: 搭配 sorted() 使用
points = [(1, 2), (3, 1), (5, 4)]
# 根據每個元組的第二個元素排序
sorted_points = sorted(points, key=lambda p: p[1])
print(sorted_points)
# 範例 3: 搭配 map() 使用
nums = [1, 2, 3, 4]
# 將列表中每個數都平方
squared_nums = list(map(lambda x: x * x, nums))
print(squared_nums)

練習 1: 寫一個 lambda 函式,接收一個數字 `x` 並回傳它的兩倍。

練習 2: 建立一個 lambda 函式 `power`,接收 `x` 和 `y`,回傳 `x` 的 `y` 次方。

練習 3: 使用 `filter()` 和 lambda,篩選出列表中大於 10 的數字。

例外處理 (Exception Handling)

Try and Except

在程式執行過程中,有時會發生預期之外的錯誤,稱為「例外」。使用 try...except 區塊可以「捕捉」這些例外,並執行對應的處理程式碼,而不是讓整個程式崩潰。這可以讓你的程式更加健壯。

# 範例 1: 捕捉特定錯誤
try:
    num = int("abc")
except ValueError:
    print("這不是一個有效的數字!")
# 範例 2: 捕捉除以零的錯誤
try:
    result = 10 / 0
except ZeroDivisionError:
    print("不能除以零!")
# 範例 3: finally 區塊
try:
    f = open("myfile.txt", "r")
    # ... 讀取檔案 ...
except FileNotFoundError:
    print("檔案不存在")
finally:
    print("程式執行完畢")

練習 1: 使用 `try...except` 捕捉 `10 / 0` 可能引發的 `ZeroDivisionError`。

練習 2: 列表 `my_list = [1, 2]`。嘗試存取 `my_list[5]` 並捕捉 `IndexError`。

練習 3: 捕捉 `int('xyz')` 可能引發的 `ValueError`,並印出 "轉換失敗"。

綜合練習

這裡是綜合練習區,我們將融合前面章節所學的變數、資料結構、流程控制和函式,來完成一些有趣的小專案。試著自己先思考解法,再參考答案!

專案 1 (簡單): BMI 計算機

寫一個程式,讓使用者輸入他們的身高(公尺)和體重(公斤),然後計算並印出他們的 BMI 值,並根據 BMI 值判斷體位(例如:過輕、正常、過重)。

專案 2 (簡單): 簡易待辦事項清單

建立一個程式,讓使用者可以新增待辦事項到一個清單中,並可以隨時查看目前所有的待辦事項。

專案 3 (中等): 終極密碼遊戲

寫一個猜數字遊戲。程式先隨機產生一個 1 到 100 的數字,然後讓使用者重複輸入猜測,直到猜對為止。每次猜錯後要提示使用者猜的數字是太高還是太低,並加入例外處理以防止輸入非數字字元。

專案 4 (中等): 單字計數器

寫一個函式,接收一個句子(字串),然後回傳一個字典,字典中紀錄了每個單字出現的次數。忽略大小寫的差異。

專案 5 (困難): 簡易聯絡人管理系統

建立一個程式,可以新增、查詢、列出所有及刪除聯絡人資訊 (名字和電話)。使用字典來儲存聯絡人,並將不同功能包裝成函式,透過一個主選單迴圈來讓使用者可以重複操作。

課程回饋問卷(匿名調查)

為了讓我們未來能提供更優質的學習內容,誠摯地邀請您花1分鐘時間填寫這份問卷。您的寶貴意見是我們持續改進的最大動力,感謝您的參與!

測驗進度:


Python 學習小幫手

線上為您簡單解答,如果要更仔細的答案,建議使用Gemini(via Colab)