國中生用 Python 寫出第一個實用小工具:從作業壓力到自我實現的轉變

作者:Ah Ha Coding 編輯團隊
#國中生學Python#Python入門#兒童程式教育#青少年程式設計#Python小工具
國中生用 Python 寫出第一個實用小工具:從作業壓力到自我實現的轉變

TL;DR 重點摘要

  • Python 語法簡單易學,是國中生從積木程式進入文字程式的最佳選擇
  • 從「解決自己的問題」出發,是國中生寫出第一個實用工具最強的學習動機
  • 作業提醒器、成績計算機、讀書計畫生成器都是國中生能獨立完成的真實專案
  • 寫程式的過程培養邏輯思維與問題拆解能力,這些能力在所有科目都受用
  • 家長不需要懂程式,只需要給孩子一台電腦和足夠的探索空間

目錄


為什麼國中生特別適合從 Python 出發

很多家長第一次聽到「國中生學 Python」,腦海中浮現的畫面可能是一個滿螢幕黑底白字、讓人頭皮發麻的程式碼視窗。但事實上,Python 之所以成為全球青少年程式教育的首選語言,正是因為它刻意設計得「讓人讀得懂」。

Python 語法接近自然語言,入門門檻低

我們拿一個簡單的例子來說明。如果你想讓電腦判斷「成績是否及格」,在 Python 裡你只需要這樣寫:

score = 60
if score >= 60:
    print("及格了!")
else:
    print("需要加油!")

這段程式碼幾乎就像在用英文直接說:「如果分數大於等於 60,就印出『及格了!』,否則印出『需要加油!』。」這種接近口語邏輯的語法,讓國中生不需要先背一大堆奇怪的符號規則,就能快速理解程式在做什麼。

相比其他語言,Python 省略了許多繁瑣的格式要求,讓孩子可以把精力專注在「解決問題的邏輯」上,而不是一直在跟奇怪的語法錯誤搏鬥。這對正值學業壓力高峰期的國中生來說,是非常關鍵的優勢。

從 Scratch 到 Python:一個自然的成長路徑

許多在國小接觸過 Scratch 積木程式的孩子,升上國中之後會開始覺得「積木做不出我想要的東西」。這個「想做更複雜的事」的渴望,正是轉向 Python 的最佳時機。

積木程式讓孩子理解了「變數」、「迴圈」、「條件判斷」這些核心概念,Python 則讓他們用更自由、更強大的方式實現這些概念。台灣本土開發的 Py4t 平台就是專為國中小學生設計的 Python 學習工具,目的就是幫助學生從 Scratch 自然橋接到文字程式語言。

這個過渡並不需要一步到位。家長可以觀察孩子是否出現「我想做某個功能,但 Scratch 做不到」的挫折感——那往往就是引入 Python 的黃金時機。


國中生最常寫的第一個實用小工具有哪些?

學程式最大的陷阱,就是練了一堆語法,卻不知道能拿來做什麼。對國中生來說,最有效的學習方式是「解決自己真實生活中的問題」。以下三個小工具,不僅難度適中,更重要的是——每一個都是國中生每天都需要的東西。

工具一:作業與考試倒數提醒器

這大概是國中生最有動力完成的第一個專案。想像一下:你輸入會考的日期,程式自動幫你算出「距離考試還有幾天」,並且在天數少於 7 天時提醒你「快去念書!」

這個工具需要用到的 Python 技能包含:

  • 變數與資料型態:儲存考試名稱和日期
  • datetime 模組:計算日期差距
  • 條件判斷(if/else):根據天數顯示不同提醒訊息

程式範例:

import datetime

# 1. 取得考試資訊 (變數與資料型態)
exam_name = input("請輸入考試名稱(例如:會考):")
print(f"--- 設定 {exam_name} 的日期 ---")
year = int(input("請輸入年份 (例如 2024): "))
month = int(input("請輸入月份 (1-12): "))
day = int(input("請輸入日期 (1-31): "))

# 2. 使用 datetime 模組計算日期
exam_date = datetime.date(year, month, day) # 設定考試當天的日期
today = datetime.date.today()               # 取得今天的日期
delta = exam_date - today                   # 計算兩個日期之間的差距
days_left = delta.days                      # 取得差距的天數

# 3. 條件判斷與提醒 (if/else)
print(f"\n【{exam_name} 倒數報告】")

if days_left > 0:
    print(f"距離考試還有 {days_left} 天。")
    if days_left <= 7:
        print("🚨 提醒:剩不到一週了,快去念書!")
    else:
        print("保持節奏,現在開始準備最輕鬆。")
elif days_left == 0:
    print("🌟 就是今天!祝你考試順利,發揮實力!")
else:
    print("🏁 考試已經結束囉!辛苦了,去放鬆一下吧!")

為什麼這個專案很適合初學者?

即時回饋感:比起印出「Hello World」,看到程式能精確算出「距離 5/20 會考還有 12 天」會讓學生覺得電腦真的聽懂了他的指令。

型態轉換的實戰:學生會學到為什麼 input() 進來的東西要加上 int() 轉換,否則電腦無法進行數學運算。

模組的威力:透過 import datetime,他們會發現不需要自己去算閏年或大月小月,學會「站在巨人的肩膀上」寫程式。

整個程式大約 15 到 20 行,對剛入門的國中生來,都能感受到自己親手做出來的工具真的在「工作」,那種感覺是任何教科書都給不了的。

工具二:成績加權計算機

台灣國中的成績計算方式往往讓學生頭痛:平時成績佔 40%、段考佔 60%,算來算去容易出錯。如果自己寫一個 Python 程式幫忙算,不但學到了程式,還真的解決了生活問題。

這個工具需要:

  • 輸入函數(input()):讓使用者輸入各項成績
  • 數學運算:加權平均計算
  • 迴圈(for loop):處理多個科目
  • 格式化輸出:讓結果清楚好讀

程式碼範例:


# 1. 定義科目與加權比例
subjects = ["國文", "英文", "數學", "自然", "社會"]
weight_normal = 0.4  # 平時成績佔 40%
weight_exam = 0.6    # 段考成績佔 60%

scores_record = [] # 用來儲存每科算完的結果

print("=== 國中生成績加權計算系統 ===")

# 2. 使用迴圈處理多個科目 (for loop)
for subject in subjects:
    print(f"\n計算【{subject}】成績:")
    
    # 取得分數 (input) 並轉換為浮點數
    normal_score = float(input(f"  請輸入平時成績: "))
    exam_score = float(input(f"  請輸入段考成績: "))
    
    # 3. 數學運算:加權得分
    final_score = (normal_score * weight_normal) + (exam_score * weight_exam)
    
    # 將結果存入列表
    scores_record.append(final_score)
    print(f"  => {subject} 加權後的總分是: {final_score:.1f}")

# 4. 格式化輸出總體結果
print("\n" + "="*30)
total_avg = sum(scores_record) / len(subjects)
print(f"本學期總平均成績: {total_avg:.2f} 分")

# 5. 自我反思小提示
if total_avg >= 90:
    print("✨ 太棒了!你是時間管理大師嗎?繼續保持!")
elif total_avg >= 60:
    print("📈 及格了,但還有進步空間,看看哪一科可以再衝刺一下?")
else:
    print("🚩 警告:目前的學習策略需要調整囉,去找老師聊聊吧!")

為什麼這個專案能引發思考?

這個專案背後隱藏了一個重要的數學概念,也就是加權平均數 (Weighted Mean) 的邏輯:

TotalScore=(Snormal×Wnormal)+(Sexam×Wexam)Total Score = (S_{normal} \times W_{normal}) + (S_{exam} \times W_{exam})

當學生在程式中看到這行公式時,他們會發現:

  • 權重的影響力:為什麼段考少考 10 分,總成績會掉這麼多?因為它的權重(0.6)比較大。
  • 數據結構的魅力:使用 for loop 跑完五個科目的過程,讓他們理解到「自動化」的價值——寫一次邏輯,處理無限多筆資料。

學生可以嘗試修改 weight_normalweight_exam 的數值。例如:「如果今天學校突然改成平時成績佔 80%,你的分數會變高還是變低?」

這種透過修改參數來預測結果的過程,就是最原始也最純粹的**數據科學(Data Science)**啟蒙。

有趣的是,當孩子親自用程式算出成績,往往比讓家長幫忙算更能理解成績結構,也更願意思考「我需要在哪一科加強」。程式在這裡不只是工具,更變成了自我反思的媒介。

工具三:個人讀書計畫生成器

這是稍微進階一些的專案,但也是讓孩子從「被動接受」轉向「主動規劃」的關鍵工具。使用者輸入考試科目、距離考試的天數,程式自動分配每天應該念哪些科目、念多久。

這個工具需要:

  • 列表(list)與字典(dict):儲存科目與時間資料
  • 迴圈與條件判斷:根據條件分配讀書任務
  • 函式(function):把重複的計算包裝起來

程式碼範例:


import math

# 1. 定義計算函式 (Function)
def generate_study_plan(subject_list, days_left, daily_minutes):
    # 使用字典儲存結果 (Dict)
    plan = {}
    
    # 計算總共可用的讀書總分鐘數
    total_available_time = days_left * daily_minutes
    # 平均分配給每個科目
    time_per_subject = total_available_time // len(subject_list)
    
    # 2. 分配邏輯 (Loop & Dict)
    for subject in subject_list:
        # 計算每天該科要念多久
        daily_task_time = time_per_subject // days_left
        plan[subject] = daily_task_time
        
    return plan

# --- 主程式開始 ---
print("🚀 歡迎使用:個人讀書計畫自動生成器")

# 3. 輸入科目 (List)
subjects_input = input("請輸入要準備的科目(用空格分開,例如:數學 英文 物理):")
subjects = subjects_input.split()

days = int(input("距離考試還有幾天? "))
hours_per_day = float(input("每天願意花幾個小時讀書? "))
minutes_per_day = int(hours_per_day * 60)

# 4. 呼叫函式並顯示結果 (Formatting Output)
study_plan = generate_study_plan(subjects, days, minutes_per_day)

print("\n" + "="*30)
print(f"📊 你的【{days} 天衝刺計畫】已生成:")
print(f"總科目數:{len(subjects)} 科")
print(f"每天總讀書時間:{minutes_per_day} 分鐘")
print("-" * 30)

for subject, time in study_plan.items():
    print(f"📖 {subject.ljust(6)} : 每天讀 {time} 分鐘")

print("-" * 30)
print("💡 小叮嚀:計畫是死的,人是活的,加油!")

專案背後的「工程思維」

這個工具讓國中生接觸到了程式設計中最重要的幾個核心概念:

  • 演算法(Algorithm)的雛形: 我們在函式中定義了一個簡單的數學邏輯:

    每日單科時間=總天數×每日總時數科目總數×總天數\text{每日單科時間} = \frac{\text{總天數} \times \text{每日總時數}}{\text{科目總數} \times \text{總天數}}

    雖然看起來很簡單,但這就是自動化分配任務的基礎。

  • 字串處理(String Manipulation): 透過 split(),學生可以學會如何讓電腦把一整串文字("數學 英文 物理")拆解成一個清單(['數學', '英文', '物理'])。

  • 函式的抽象化: 學生會理解到,我們把「分配時間」的邏輯包裝在 generate_study_plan 裡面,主程式只要給它「原料」(科目、天數、時間),它就能吐出「成品」(計畫表)。

當孩子看到螢幕上印出「明天:數學 40 分鐘、英文 30 分鐘」,那種「電腦在聽我的話」的掌控感,是讓許多青少年愛上程式設計的關鍵時刻。


從作業壓力到自我實現:那個關鍵的轉變點

很多家長帶孩子學程式,最初的出發點是「培養競爭力」或「準備 APCS」,這些都是很好的目標。但真正讓程式學習產生深遠影響的,往往不是那些外在的成績,而是孩子內心發生的一個根本性轉變:從「被問題困住」到「主動解決問題」。

動機的力量:解決自己的問題

教育研究一再證實,學習動機是學習成效最關鍵的因素。當一個國中生寫程式是為了「完成老師指定的作業」,和「解決自己每天都很頭痛的問題」,這兩種狀態下的學習深度完全不同。

前者讓孩子學會語法,後者讓孩子學會思考。

因此,最聰明的做法不是一開始就讓孩子學習「正規的程式課程」,而是問他:「你現在生活中有什麼讓你覺得麻煩的事情?」然後一起思考:「能不能用程式來解決?」

這個問題有時候會引發意想不到的創意。有孩子想做「家族生日提醒系統」,有人想做「漫畫章節自動追蹤器」,有人想做「班級值日生輪換表」。這些看似不起眼的小想法,背後其實需要用到相當完整的程式設計概念。

成就感的滾雪球效應

國中階段的孩子正處於自我認同發展的關鍵期,他們特別需要「我做得到」的正向回饋。當孩子第一次讓自己寫的程式成功運行——哪怕只是印出「你好,世界!」——那種成就感是真實且強烈的。

更重要的是,這種成就感會滾雪球。「我做到了一個,我一定能做到下一個」這樣的信念,會讓孩子在面對 bug(程式錯誤)時不再立刻放棄,而是願意花時間一行一行檢查、修正。

這個「找出問題、修正問題、再試一次」的過程,在程式語言裡叫做「除錯(debugging)」,但在人生中,我們叫它「韌性」。

許多家長後來回頭看,才發現孩子學程式最大的收穫不是那幾行 Python 程式碼,而是他們開始用不一樣的眼光看待問題——不再把困難當成牆,而是當成可以拆解、可以解決的謎題。

這就是從作業壓力到自我實現的真正轉變:不是學會了多少技術,而是改變了面對挑戰的方式。


讓孩子學 Python,從一個小工具開始就夠了。那個小工具可能不完美,程式碼可能寫得不夠漂亮,但它是孩子第一次用自己的雙手,在這個世界上創造出真實有用的東西。這個起點,比任何人想像的都更有力量。


AI導師 Python 程式教學 - 隨時可以學習

免費試用

Ah Ha Coding AI 程式教學

?常見問題 FAQ

Q.國中生完全沒有程式基礎,可以直接學 Python 嗎?

可以!Python 的語法設計非常接近日常語言邏輯,即使完全沒有程式基礎的國中生也能快速上手基本概念。如果孩子曾經接觸過 Scratch 積木程式,學習 Python 會更有優勢,因為許多核心概念(如變數、迴圈、條件判斷)已經有了基礎。建議從簡單的互動式練習開始,讓孩子在動手做中建立信心。

Q.孩子學 Python 需要很貴的設備或軟體嗎?

完全不需要!Python 本身是免費的開源語言,可以直接從官方網站下載安裝。此外,也有許多線上平台讓孩子直接在瀏覽器裡寫程式,完全不需要安裝任何軟體,一台普通的電腦或平板就夠了。學習資源方面也有大量免費的中文教材和影片可以使用。

Q.家長自己不懂程式,能陪孩子一起學 Python 嗎?

當然可以!家長不需要懂程式,最重要的角色是提供支持和探索空間。你可以陪孩子一起想想「生活中有什麼問題可以用程式解決」,在孩子遇到挫折時給予鼓勵,並對孩子的成果表現出真誠的興趣。有時候家長一起學習、一起解決問題,反而能讓孩子感受到更強的支持感。

Q.學 Python 對國中生的學業成績有幫助嗎?

學 Python 對學業的幫助是間接但深遠的。程式設計需要邏輯推理、問題拆解和耐心除錯,這些能力對數學、自然科學、甚至寫作都有正面影響。更重要的是,孩子在學程式過程中培養的「遇到問題不放棄、找出方法解決」的心態,能在各科學習中發揮作用。

Q.國中生學 Python 多久才能寫出實用的小工具?

大多數有基本學習動機的國中生,在學習 2 到 4 週的基礎語法後,就能嘗試完成第一個簡單的實用工具,例如成績計算機或倒數提醒器。當然,每個孩子的學習節奏不同,重點不在於速度快慢,而在於是否找到了真正想解決的問題。有了明確的目標,進步速度往往比想像中快很多。