Week 17: 小專案實作

用Python打造屬於你的專案!

張傑帆

National Taiwan University

小專案實作

目錄

什麼是「小專案」?

  • 小專案 = 把多個程式片段整合,解決一個實際問題
  • 例如:記帳系統、待辦清單、簡易遊戲、資料視覺化工具
  • 你可以根據興趣,設計屬於自己的專案!

專案開發流程

  1. 發想主題:想一個你想解決的問題 (與AI對話可以幫助你發想)
  2. 需求分析:列出專案需要哪些功能
  3. 設計架構:畫出流程圖或模組圖
  4. 程式撰寫:分工撰寫各個功能
  5. 整合測試:組合所有模組並測試
  6. 除錯優化:修正bug、優化程式
  7. 成果發表:展示你的專案!

範例:個人記帳系統

我們以「個人記帳系統」為例,示範如何從零開始做一個小專案。

步驟一:需求分析

功能 說明
新增紀錄 輸入花費/收入
顯示紀錄 列出所有收支明細
計算總結 計算總收入、總支出
儲存/讀取 將資料存檔,下次可讀取

步驟二:設計資料結構

  • 每一筆紀錄可以用字典(dict)儲存
  • 所有紀錄用串列(list)管理
# 一筆紀錄的範例
record = {
    "type": "收入",  # 或 "支出"
    "amount": 500,
    "note": "打工"
}
# 多筆紀錄
records = [record1, record2, ...]

一些激發創意的方法

從你擅長的領域出發

才最有可能是獨一無二的

多看看別人的做品

可以激發靈感,觸類旁通

https://www.ccclub.io/achievement

找到痛點

有些需求別人不一定有注意到!

要與眾不同

跟別人一樣或雷同就沒什麼創意了

不要抄以前的人做過的

有現成商品的就不要做了,除非你能超越他

使用最新的技術

最新的技術應用是最有待開發的

使用極冷門的技術

說不定能蹦出新的火花

軟硬結合

打破螢幕的隔離

長得好看

外觀精致可以多得一些印像分

本週總結 🎉

  • 專案需求分析與規劃
  • 專案內容發想與設計
  • 練習將程式模組化、整合
  • 請完成你的專案成果上傳到網站!

-----------------------------------------

圖片放大特效

table樣式

- [封面](#week-17-小專案實作)

- [步驟一:需求分析](#步驟一:需求分析) - [步驟二:設計資料結構](#步驟二:設計資料結構) - [小練習 1:新增紀錄](#小練習-1) - [小練習 2:顯示紀錄](#小練習-2) - [小練習 3:計算總結](#小練習-3) - [專案進階挑戰](#專案進階挑戰)

(點擊上方連結可快速跳轉到對應投影片)

- **運算思維**: - **問題分解**: 將專案需求分解為可實作的功能模組 - **抽象化**: 設計專案的整體架構與流程 - **演算法思維**: 整合各種演算法解決複雜問題 - **模式識別**: 應用學過的程式設計模式

--- ## 🎯 學習目標 今天我們將學會如何將一個想法,變成一個真正可以運作的Python小專案! - 學會專案規劃與需求分析 - 學會如何將程式模組化 - 學會專案時程與版本管理 - 學會測試與除錯

--- ## 步驟三:主程式架構 ```python def main(): records = [] while True: print("1. 新增紀錄 2. 顯示紀錄 3. 計算總結 4. 離開") choice = input("請選擇功能:") if choice == "1": # 新增紀錄 ... elif choice == "2": # 顯示紀錄 ... elif choice == "3": # 計算總結 ... elif choice == "4": break ``` --- # 小練習 1 請試著完成「新增紀錄」的功能,提示使用者輸入收入/支出、金額與備註,並將資料加入records串列。 ```python # 請補上新增紀錄的程式碼 def add_record(records): t = input("收入或支出?") amt = int(input("金額:")) note = input("備註:") record = {"type": t, "amount": amt, "note": note} records.append(record) ``` --- # 小練習 2 請完成「顯示紀錄」的功能,將所有紀錄列印出來。 ```python def show_records(records): for r in records: print(f"{r['type']} {r['amount']} 元 - {r['note']}") ``` --- # 小練習 3 請完成「計算總結」的功能,分別計算總收入與總支出。 ```python def summary(records): income = sum(r['amount'] for r in records if r['type'] == "收入") expense = sum(r['amount'] for r in records if r['type'] == "支出") print(f"總收入:{income} 元") print(f"總支出:{expense} 元") ``` --- # 專案進階挑戰 - 將資料儲存到檔案,下次可以讀取 - 增加「刪除紀錄」功能 - 美化輸出介面 --- ## 🧠 運算思維總整理 - **問題分解**:將專案拆解成「新增」、「顯示」、「計算」等小功能 - **抽象化**:用list和dict管理資料 - **演算法思維**:用sum、for迴圈計算總結 - **模式識別**:發現每個功能都要處理records資料

![bg left:50%](image-10.png)

![bg left:50%](image.png)

![bg right:50%](image-2.png)

![bg left:50%](image-1.png)

![bg right:50%](image-3.png)

![bg left:50%](image-9.png)

![bg right:50%](image-7.png)

![bg left:50%](image-6.png)

![bg right:50%](image-5.png)

![bg left:40%](image-10.png)

![alt text](image-22.png)

- 學會如何從想法到專案的完整流程

- 體驗專案管理與測試

--- ## 作業: --- #### 📝 **選項一:基礎練習** (適合初學者) - 完成記帳系統的三大功能(新增、顯示、計算) - 嘗試將資料儲存到檔案 --- #### 🔧 **選項二:進階應用** (有點挑戰性) - 增加「刪除紀錄」、「修改紀錄」功能 - 美化輸出介面(如表格顯示) --- #### 🚀 **選項三:創意發揮** (自由度高) - 設計屬於你自己的小專案(如:待辦清單、簡易遊戲、資料視覺化) - 分享你的專案設計與心得