Python 學習目標規劃書

Python 學習目標規劃書

總體目標:在六個月內,從零基礎掌握 Python 編程,具備獨立開發簡單應用程式(如命令列工具、簡單 Web 應用或數據分析腳本)的能力,並為進階主題(如機器學習、進階 Web 開發)打下基礎。

前提條件

第一階段: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()
                

免費資源總結

注意事項