Python 學習目標規劃書
總體目標:在六個月內,從零基礎掌握 Python 編程,具備獨立開發簡單應用程式(如命令列工具、簡單 Web 應用或數據分析腳本)的能力,並為進階主題(如機器學習、進階 Web 開發)打下基礎。
前提條件:
- 每天學習 6 小時(可分為 2-3 段,如上午 3 小時、下午 3 小時)。
- 使用 MacBook Pro,安裝 Python 3.11+(免費):
- 訪問 Python 官方網站,下載適用於 macOS 的最新版本(建議 3.11 或以上)。
- 執行下載的 .pkg 安裝程式,遵循提示完成安裝。
- 打開終端(Terminal),輸入
python3 --version
檢查是否安裝成功(應顯示版本號)。 - macOS 內建 Python 2.x,務必使用
python3
和pip3
命令運行 Python 3 和安裝模組。
- 使用免費 IDE VS Code 或線上編輯器 Replit:
第一階段:1 個月(基礎入門)
目標:掌握 Python 基礎語法,理解基本編程概念,能編寫簡單命令列程式(如計算器、文字處理工具)。
每日時間分配:理論學習(2 小時)、實作練習(3 小時)、複習與總結(1 小時)。
週數 | 學習內容 | 資源 | 練習 |
---|---|---|---|
第 1 週 | Python 入門與環境設置:變數、資料型別(整數、浮點數、字串、布林)、基本運算 |
Python Official Tutorial freeCodeCamp Python 莫煩 Python |
製作簡單計算器、字串拼接 |
第 2 週 | 控制流程與函數:if-else、for/while 迴圈、函數定義與調用 |
W3Schools Python 菜鳥教程 |
猜數字遊戲、階乘函數 |
第 3 週 | 資料結構:列表、字典、元組、集合 |
Programiz Python 莫煩資料結構 |
聯繫人管理系統(字典存儲姓名和電話) |
第 4 週 | 檔案操作與簡單項目:檔案讀寫(txt、csv)、異常處理 |
Real Python File I/O 菜鳥教程檔案操作 |
待辦事項清單程式(新增、刪除、儲存) |
成果:能編寫 50-100 行簡單程式,熟悉語法和資料結構,處理簡單檔案操作。
第一階段測驗試題(10 題)
1. 變數與資料型別:請寫一個程式,定義兩個變數(一個整數、一個字串),並將它們相加後列印結果。
答案:
a = 5 b = "10" result = a + int(b) print(result) # 輸出:15
2. 字串操作:給定字串 s = “Hello, World!”,請提取 “World” 並列印。
答案:
s = "Hello, World!" print(s[7:12]) # 輸出:World
3. 條件語句:寫一個程式,檢查輸入數字是否為偶數(使用 input())。
答案:
num = int(input("請輸入一個數字:")) if num % 2 == 0: print("是偶數") else: print("不是偶數")
4. 迴圈:列印 1 到 10 的所有奇數。
答案:
for i in range(1, 11, 2): print(i) # 輸出:1, 3, 5, 7, 9
5. 函數:寫一個函數計算給定數字的平方。
答案:
def square(num): return num * num print(square(4)) # 輸出:16
6. 列表操作:給定列表 lst = [1, 2, 3, 4],將每個元素加倍並列印新列表。
答案:
lst = [1, 2, 3, 4] new_lst = [x * 2 for x in lst] print(new_lst) # 輸出:[2, 4, 6, 8]
7. 字典:創建一個字典儲存兩個人員的姓名和年齡,列印某人的年齡。
答案:
people = {"Alice": 25, "Bob": 30} print(people["Alice"]) # 輸出:25
8. 元組:創建一個元組儲存 3 個數字,計算它們的總和。
答案:
numbers = (1, 2, 3) print(sum(numbers)) # 輸出:6
9. 檔案寫入:將字串 “Hello, Python!” 寫入檔案 “test.txt”。
答案:
with open("test.txt", "w") as file: file.write("Hello, Python!")
10. 異常處理:寫一個程式處理輸入非數字的錯誤。
答案:
try: num = int(input("請輸入一個數字:")) print(num) except ValueError: print("請輸入有效數字!")
第二階段:3 個月(進階基礎與實作)
目標:深入理解進階概念,熟悉模組,掌握數據結構與簡單算法,完成中型項目(如爬蟲或數據分析工具)。
每日時間分配:理論學習(1.5 小時)、實作練習(3 小時)、項目開發與複習(1.5 小時)。
月份 | 學習內容 | 資源 | 練習 |
---|---|---|---|
第 2 個月 | 物件導向程式設計(OOP):類、物件、繼承、多型;模組:random、math、datetime、os |
Real Python OOP 菜鳥教程 OOP |
銀行帳戶管理系統(存款、提款、查餘額) |
第 3 個月 | 資料結構(堆疊、佇列)、基礎算法(排序、搜尋)、正則表達式、簡單爬蟲(requests、BeautifulSoup) |
GeeksforGeeks Data Structures 莫煩爬蟲 Requests 文檔 |
爬蟲抓取天氣資訊 |
第 4 個月 | 資料分析基礎:pandas、numpy;項目:分析公開數據集 |
Kaggle Learn Python Pandas 文檔 莫煩 Pandas |
分析電影評分數據,生成統計圖表 |
成果:能進行資料處理和爬蟲,完成中型項目,熟悉 OOP 和模組。
第二階段測驗試題(10 題)
1. OOP:定義一個 Dog 類,包含 name 屬性和 bark() 方法,創建一個實例並調用方法。
答案:
class Dog: def __init__(self, name): self.name = name def bark(self): return f"{self.name} says Woof!" dog = Dog("Max") print(dog.bark()) # 輸出:Max says Woof!
2. 繼承:創建一個 Animal 類和一個繼承它的 Cat 類,Cat 有 meow() 方法。
答案:
class Animal: def __init__(self, name): self.name = name class Cat(Animal): def meow(self): return f"{self.name} says Meow!" cat = Cat("Luna") print(cat.meow()) # 輸出:Luna says Meow!
3. 模組:使用 random 模組生成 1 到 100 的隨機數。
答案:
import random print(random.randint(1, 100))
4. 堆疊:使用列表實現堆疊,執行 push 和 pop 操作。
答案:
stack = [] stack.append(1) # push stack.append(2) # push print(stack.pop()) # 輸出:2 print(stack) # 輸出:[1]
5. 佇列:使用列表模擬佇列,執行 enqueue 和 dequeue。
答案:
queue = [] queue.append(1) # enqueue queue.append(2) # enqueue print(queue.pop(0)) # dequeue, 輸出:1 print(queue) # 輸出:[2]
6. 冒泡排序:對列表 [5, 2, 8, 1, 9] 進行冒泡排序。
答案:
lst = [5, 2, 8, 1, 9] for i in range(len(lst)): for j in range(len(lst)-i-1): if lst[j] > lst[j+1]: lst[j], lst[j+1] = lst[j+1], lst[j] print(lst) # 輸出:[1, 2, 5, 8, 9]
7. 正則表達式:從字串 “email: test@example.com” 中提取 email 地址。
答案:
import re text = "email: test@example.com" email = re.findall(r'[\w\.-]+@[\w\.-]+', text) print(email) # 輸出:['test@example.com']
8. 爬蟲:使用 requests 獲取一個網頁的標題(假設 URL 為 “http://example.com”)。
答案:
import requests from bs4 import BeautifulSoup response = requests.get("http://example.com") soup = BeautifulSoup(response.text, "html.parser") print(soup.title.text) # 輸出:Example Domain
9. Pandas:創建一個包含姓名和年齡的 DataFrame,篩選年齡大於 25 的人。
答案:
import pandas as pd data = {"name": ["Alice", "Bob", "Charlie"], "age": [25, 30, 22]} df = pd.DataFrame(data) print(df[df["age"] > 25]) # 輸出:name=Bob, age=30
10. Numpy:創建一個 3×3 的全 1 陣列並計算其總和。
答案:
import numpy as np arr = np.ones((3, 3)) print(arr.sum()) # 輸出:9.0
第三階段:6 個月(中級應用與專案)
目標:掌握 Web 開發基礎,熟悉資料庫操作,完成功能完整項目(如 Web 應用或自動化腳本),準備進階學習。
每日時間分配:理論學習(1 小時)、實作練習(2 小時)、項目開發(2 小時)、複習與優化(1 小時)。
月份 | 學習內容 | 資源 | 練習 |
---|---|---|---|
第 5-6 個月 | Flask/Django 框架:路由、模板、表單;SQLite 資料庫(SQLAlchemy/Django ORM) |
Flask 教程 Django 教程 Real Python Flask 菜鳥教程 Flask |
簡單部落格系統(文章新增、顯示) |
第 7-8 個月 | 進階主題:多執行緒、多進程、API;項目:功能完整應用 |
Real Python Multithreading GeeksforGeeks APIs Public APIs |
天氣查詢工具(使用公開 API) |
第 9-10 個月 | 綜合項目;Git 版本控制,分享到 GitHub |
GitHub Learning Lab 莫煩 Git freeCodeCamp Project Ideas |
上傳項目到 GitHub,撰寫 README |
成果:完成功能完整 Web 應用或腳本,熟悉 Web 開發和版本控制,具備獨立解決問題能力。
第三階段測驗試題(10 題)
1. Flask 路由:創建一個 Flask 應用,包含一個顯示 “Hello, Flask!” 的路由。
答案:
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello, Flask!" if __name__ == '__main__': app.run()
2. Flask 模板:創建一個 Flask 應用,使用模板顯示用戶輸入的名字。
答案:
from flask import Flask, render_template, request app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def index(): name = request.args.get('name', 'Guest') return render_template('index.html', name=name) # index.html:Hello, {{ name }}!
3. SQLite:創建一個 SQLite 資料庫,插入一筆資料(姓名、年齡)。
答案:
import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.cursor() cursor.execute('CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER)') cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Alice', 25)) conn.commit() conn.close()
4. Django 模型:定義一個 Django 模型表示書籍(包含標題和作者)。
答案:
from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50)
5. 多執行緒:使用 threading 模組並行執行兩個函數,各自列印數字 1-5。
答案:
import threading def print_numbers(): for i in range(1, 6): print(i) t1 = threading.Thread(target=print_numbers) t2 = threading.Thread(target=print_numbers) t1.start() t2.start() t1.join() t2.join()
6. API 請求:使用 requests 模組從公開 API 獲取 JSON 數據並列印第一筆資料。
答案:
import requests response = requests.get('https://jsonplaceholder.typicode.com/posts') data = response.json() print(data[0]) # 輸出:第一筆 JSON 資料
7. Git 命令:初始化一個 Git 倉庫並提交一個檔案 “app.py”。
答案:
git init git add app.py git commit -m "Initial commit"
8. 資料庫查詢:從 SQLite 資料庫查詢年齡大於 25 的用戶。
答案:
import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.cursor() cursor.execute('SELECT * FROM users WHERE age > 25') print(cursor.fetchall()) conn.close()
9. Flask 表單:創建一個 Flask 應用,處理 POST 表單提交並返回輸入內容。
答案:
from flask import Flask, request app = Flask(__name__) @app.route('/', methods=['POST']) def submit(): data = request.form['input'] return f"You submitted: {data}"
10. 項目整合:寫一個程式結合 API 和 SQLite,將 API 數據儲存到資料庫。
答案:
import requests import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.cursor() cursor.execute('CREATE TABLE IF NOT EXISTS posts (id INTEGER, title TEXT)') response = requests.get('https://jsonplaceholder.typicode.com/posts') data = response.json() cursor.execute('INSERT INTO posts (id, title) VALUES (?, ?)', (data[0]['id'], data[0]['title'])) conn.commit() conn.close()
免費資源總結
- 基礎學習:
- 進階學習:
- Web 開發與項目:
- 練習平台:
注意事項
- 學習方法:每天記錄筆記,使用 Notion 或文字檔案整理知識點。
- 實作為主:多寫程式碼,通過練習題和項目鞏固知識。
- 問題解決:查閱 Stack Overflow 或 Google。
- 進度調整:根據個人進度靈活調整,若某部分耗時較長,可延長該階段。
- 測驗使用:完成每個階段後,嘗試獨立解答試題,參考答案檢查正確性。