---
# System prepended metadata

title: 「There's a Python in My Boot」企劃書
tags: ['2025', course, ' proposal', Rookie Awakening]

---

# 「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 自學聖經：從程式素人到開發強者的技術與實戰大全 (二版). 碁峰資訊. 




