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