總體目標:在六個月內,從零基礎掌握 Python 編程,具備獨立開發簡單應用程式(如命令列工具、簡單 Web 應用或數據分析腳本)的能力,並為進階主題(如機器學習、進階 Web 開發)打下基礎。
前提條件:
python3 --version 檢查是否安裝成功(應顯示版本號)。python3 和 pip3 命令運行 Python 3 和安裝模組。目標:掌握 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 行簡單程式,熟悉語法和資料結構,處理簡單檔案操作。
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("請輸入有效數字!")
目標:深入理解進階概念,熟悉模組,掌握數據結構與簡單算法,完成中型項目(如爬蟲或數據分析工具)。
每日時間分配:理論學習(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 和模組。
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
目標:掌握 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 開發和版本控制,具備獨立解決問題能力。
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()