# 「There's a Python in My Boot」企畫書
:::info
> 課程負責人聯絡資訊:
> 許至齊 / Email:4lzch.working@gmail.com
- 課程參與講師:
許至齊(共計 1 人)
[name=企劃書撰寫:許至齊]
:::
> [TOC]
>
---
## 課程資訊
- 課程時間:
[time=2025/9 ~ 2025/12]
- 課程對象:
[name=Project Abyss Rookie]
[name=SIRLA Member]
- 課程預估人數:
[name= 20 人]
- 課程地點:
Discord 冒險者大廳頻道
### _預期目標與主旨_
- 掌握 Python 基礎語法與概念
-
---
## 課程規劃
### _企劃內容_
==課程內容規劃==
> [!Note] 講師:紙紙
> | 週次 | 類型 | 課程標題 | 內容 | 備註 |
> | ---- | --- | ------- | ---- | ------ |
> | 1 | ==Course== | ==Python 基礎== | 架設基礎環境(PyCharm),並介紹基礎語法與程式架構 | 環境部分使用虛擬環境架設、語法則介紹變數、螢幕輸入輸出、基礎資料型別|
> | 1 | Lab | 設置虛擬環境並安裝 Python | 在自己的電腦上設置虛擬環境,並安裝 Python,確認環境設置成功,並使用 `python --version` 驗證。並利用套件管理工具學習管理虛擬環境。 | |
> | 1 | Lab | 輸入與輸出 | 利用 `input()` 和 `print()` 函數接收輸入、輸出,並使用字串格式化來更美觀地顯示結果。 | |
> | 1 | Lab | 基本資料型別運算 | 練習在 Python 中使用不同資料型別(如整數、浮點數、字串)的基本運算,計算圓的面積和周長,並利用資料型別轉換來處理用戶輸入的數值 | 並且要求使用不一樣的型別進行計算,觀察 Python 產生的結果 |
> | 2 | ==Course== | ==控制流程與基本運算== | 介紹條件判斷、迴圈 | `if` 條件判斷、`for` 及 `while` 迴圈、基本運算符號 |
> | 2 | Lab | 條件判斷 | 撰寫根據使用者輸入的年齡,判斷對應的年齡段(如小於 18 輸出 "未成年",大於 18 輸出 "成年")。 | |
> | 2 | Lab | 九九乘法表 | 練習使用 `for` 迴圈來打印出九九乘法表 | |
> | 2 | Lab | 猜數字 | 讓程式隨機選擇一個數字,並讓使用者猜數字,直到猜中為止 | 隨機產生數字部分會提供 |
> | 3 | ==Course== | ==函數基礎== | 介紹函數語法,以及該如何透過函數設計一個可維護、擴充的程式架構 | 函數定義、參數、回傳值、作用範圍、lambda 函數 |
> | 3 | Lab | 質數判斷 | 寫一個函數來檢查給定的數字是否為質數 | |
> | 3 | Lab | 日期判斷 | 寫一個基於 1990 年 1 月 1 日,能夠根據天數輸入值判斷今天日期和星期的程式。 | TIPS:需判斷閏年 |
> | 3 | Lab | 計算圓的面積和周長 | 寫兩個函數用來計算圓的面積,和計算圓的周長。 | |
> | 4 | ==Course== | ==內建模組== | 介紹 Python 內建模組,以及如何使用 | 常用的模組(`math`、`datetime`、`random` 等) |
> | 4 | Lab | 對角線長度 | 使用 `math.sqrt()` 和 `math.pow()` 計算矩形對角線的長度 | |
> | 4 | Lab | 日期差異計算 | 使用 `datetime` 模組,讓使用者輸入兩個日期,並計算它們之間的天數差。 | 需顯示結果並處理日期格式 |
> | 4 | Lab | 1a2b | 撰寫一個 1a2b 的程式小遊戲 | |
> | 5 | ==Course== | ==內建模組與套件== | 介紹 Python 內建模組,以及如何使用 | 常用的模組(`os`、`sys`、`re` 等),並比較與套件的差別 |
> | 5 | Lab | 目錄管理 | 使用 `os` 模組來實現基本的文件操作,比如創建目錄、列出目錄中的文件、刪除文件 | |
> | 5 | Lab | 操作系統資訊 | 使用 `sys.platform` 獲取當前系統的類型,並輸出對應的系統說明 | |
> | 5 | Lab | 字符串中提取數字 | 使用 `re` 從混合文本中提取出數字 | |
> | 6 | ==Course== | ==資料結構== | 介紹列表(list)和元組(tuple)的基本操作與應用 | |
> | 6 | Lab | 計算學生成績 | 創建一個包含多個學生成績的列表,然後計算平均成績和最高成績 | |
> | 6 | Lab | 成績排序 | 將前一個例子當中的學生成績由高到低進行排序 | |
> | 6 | Lab | 商店購物清單 | 幫商店的經營者,列出商店內有販售的商品及其價格 | 使用元組(tuple) |
> | 7 | ==Course== | ==資料結構== | 介紹字典(dictionary)與集合(set)的基本操作與應用 | |
> | 7 | Lab | 學生成績記錄 | 使用字典來記錄學生的姓名及對應成績,並查詢某位學生的成績 | |
> | 7 | Lab | 商品庫存管理 | 使用字典來管理商品並存儲商品名稱和庫存數量,並提供增減庫存的功能 | |
> | 7 | Lab | 集合運算 | 創建兩個集合並進行集合操作(如聯集、交集、差集等) | |
> | 8 | ==Course== | ==文件操作== | 介紹讀寫文本文件、CSV 文件的處理、文件操作中的錯誤處理 | |
> | 8 | Lab | 讀寫文件 | 讀取一份文件,並將其內容顯示在螢幕上,然後再將某些內容寫入另一個文件中。 | |
> | 8 | Lab | CSV 文件處理 | 讀取一個簡單的 CSV 文件,並將其內容轉換為列表格式。然後將修改過的資料保存回 CSV 文件。 | |
> | 8 | Lab | 合併檔案 | 讀取多個檔案,將它們的內容合併並寫入一個新檔案。 | |
> | 9 | ==Course== | ==異常處理== | 介紹錯誤與異常處理、`try`、`except`、`else`、`finally` 的用法 | |
> | 9 | Lab | 數學運算式 | 輸入兩個數字並進行除法運算,並處理可能發生的除零錯誤 | |
> | 9 | Lab | 檔案操作錯誤 | 處理文件打開錯誤,例如指定的文件、目錄不存在或無權訪問 | |
> | 9 | Lab | 自定義異常 | 創建一個自定義異常,並在 1a2b 中使用這個異常來捕捉特定的錯誤情境 | |
> | 10 | ==Course== | ==物件導向== | 介紹物件導向基礎,類別(Class)、屬性(Attribute)、方法(Method) | Optional |
> | 10 | Lab | 銀行帳號 | 設計一個 `BankAccount` 類別,包含存款、取款和查詢餘額等方法。 | |
> | 10 | Lab | 商品庫存管理 | 設計一個商品的類別,並且能夠管理商品的庫存數量、價格等資訊 | 需使用資料結構儲存 |
> | 10 | Lab | 商店系統 | 設計一個簡單的商店系統,其中涉及庫存管理和銀行帳戶管理。商店有商品,每個商品都有庫存數量和價格,同時商店的銀行帳戶用來存儲資金。當商品賣出時,會觸發庫存數量的變更,同時更新商店的資金。 | |
> | 11 | ==Course== | ==物件導向== | 介紹繼承、封裝、方法覆寫與多態 | Optional |
> | 11 | Lab | 簡單繼承 | 定義一個基礎類別 `Animal`,並從繼承到 `Dog` 和 `Cat` 類別,實現不同的行為(如 `eat()`) | |
> | 11 | Lab | 封裝與資料隱藏 | 寫一個類別,將某些屬性設為私有(使用 `__` 前綴),並提供公有方法來操作它們 | |
> | 11 | Lab | 多態性 | 使用多態性來讓不同的類別有相同名稱但不同實現的方法(如 `eat()`),並讓多個類別共享 | |
> | 12 | ==Course== | ==物件導向== | 介紹物件導向抽象類別、設計模式 | Optional |
> | 12 | Lab | 抽象類別 | 創建一個 `Shape` 抽象類別,其中包含 `area()` 和 `perimeter()` 的抽象方法,並讓學生實現不同的子類別,如 `Circle` 和 `Rectangle`。 | |
> | 12 | Lab | 工廠設計模式 | 理解工廠設計模式的基本概念,並編寫一個簡單的工廠方法來創建不同類型的物件。 | |
> | 12 | Lab | 單例模式 | 實現一個 `Logger` 類別,它只能有一個實例,並且能夠記錄日誌信息。學生將使用單例模式來確保多次創建 `Logger` 實例時,始終返回相同的物件。 | |
### _企劃時程_
| 日期 | 企劃項目 | 負責人 | 備註 |
| --- | --- | ------- | ----- |
| 03/01 - 03/31 | 課程企劃與企畫書撰寫 | 許至齊 | |
| 04/01 - 07/31 | 筆記撰寫與課程教材準備 | 許至齊 | 教材源於參考來源檢附的文獻 |
| 09/01 - 12/31 | 正式教學 | 許至齊 | |
---
## 備註
- 題目可以從 Leetcode 或是相關書籍裡面挑選
- 套件管理工具:uv pip
- 可以加上使用 ai 幫助程式碼的撰寫
### _會議紀錄_
2025/04/25
第一堂課
- 第一堂課把 if else 加進來
- editor 和 interpreter 是什麼?
- 要用哪個虛擬環境(venv, python, ....)、套件管理工具是什麼
- 如果要用 terminal 要教 command 操作
editor = VScode,
interpreter =
virtual env = venv
package manager = pip
---今天死線
之後幾堂課的
- library 要教哪些
教材
- 標題分界
- references 要寫
2025/03/15
- lab 與教學大鋼盡快完成
- 套件與細節要補上(虛擬環境、editor、套件管理工具)
- 企劃時程要補上
- 下次開會(三月最後一週)前完成
optional 至少三個
內建模組只一堂
### _參考來源_
- The Hitchhiker’s Guide to Python! (n.d.). Retrieved March 2, 2025, from https://docs.python-guide.org/
- The Python Tutorial. (n.d.). Python Documentation. Retrieved March 2, 2025, from https://docs.python.org/3/tutorial/index.html
- Matthes, E. (2023). Python crash course: A hands-on, project-based introduction to programming (3rd ed.). No Starch Press®.
- Sweigart, A. (2020). Automate the boring stuff with Python: Practical programming for total beginners (2nd ed.). No Starch Press.
> Covers working with files en masse, automating emails and texts, scraping the web, and more
- Sweigart, A. (2021). Beyond the basic stuff with Python: Best practices for writing clean code. No Starch Press, Inc.
> Covers decorators, generators, context managers, testing, and web development
- Kalb, I. (2022). Object-oriented Python: Master OOP by building games and GUIs. No Starch Press.
> Covers modeling, pygame, inheritance, polymorphism, abstraction, and encapsulation
- Ramalho, L. (2022). Fluent Python: Clear, concise, and effective programming (2nd ed.). O’Reilly Media, Inc.
- 文淵閣工作室. (2021). Python 自學聖經:從程式素人到開發強者的技術與實戰大全 (二版). 碁峰資訊.