Skip to content

模組一總結:你已經學會跟電腦溝通了!

恭喜你走到這裡 (ノ◕ヮ◕)ノ*:・゚✧

說真的,回想一下三節課前,你還不知道 print() 是什麼。現在,你已經能讓電腦聽你說話、幫你算數學、還能根據不同條件做出不同判斷。

這不是一小步,這是一大步。

真的值得灑花。不過好吧,我承認我學到這裡的時候,心裡想的是:「就這樣?我以為程式很難耶。」——然後模組二就把我打回原形了 (´ཀ`」 ∠)

不過別擔心,你現在的基礎已經比當時的我好多了。

在往前衝之前,讓我們先回頭看看走了多遠。三節課下來,你其實已經累積了不少技能。把這些東西攤開來看,會比你想像的多。

模組一知識地圖

讓我們把這三節學到的東西,用一張圖串起來:

📷 圖 13:模組一知識地圖資訊圖表(AI 製圖)

📷 圖 13:模組一知識地圖資訊圖表(AI 製圖)

看完地圖,有沒有覺得「哇,原來我已經會這麼多了」?接下來做個小自測,不是考試那種:是給你自己確認用的。

自我檢查表

對照下面的清單,看看你是不是每一項都掌握了:

#能力你會了嗎?
1我知道什麼是 IPO 思維,而且能用它來分析 Judge 題目
2我能用 print() 印出文字和計算結果
3我能用 input() 讀取使用者輸入
4我知道 input() 讀進來的永遠是字串,需要用 int() 轉換
5我能建立變數、知道 = 是指派不是等於
6我能分辨 intfloatstr 三種型別
7我會用 + - * / // % 做運算
8我知道 === 的差別
9我能用 andornot 組合布林條件
10我能寫 if-elif-else 讓程式根據條件做不同的事
11我知道 Python 的縮排(indentation)是有意義的
12我能畫簡單的流程圖來整理判斷邏輯
13我理解 Python 的「由內而外」求值順序(例如 print(1+1) 先算再印、int(input()) 先讀再轉)

如果 13 項全勾了,你已經完全準備好進入模組二了。

如果有幾項不確定,回去對應的章節重新看一次,然後再做一次 Judge 題目。學程式沒有捷徑,但每一次練習都是在進步。

所以不要灰心,你已經在路上了。

自我檢查過了,觀念也都到位了。但真正的考驗是:能不能把分散在三節裡的技能,串在同一支程式裡一起用?來試試看吧。

模組一畢業考:來一道綜合題吧!

檢查表全勾了?太好了,那來驗收一下 (ノ>ω<)ノ

接下來這道題,會用到你在模組一學到的所有技能

  • 1-1 的 input()print()(I/O)
  • 1-2 的 //%(整數除法和取餘數)
  • 1-3 的 if-else(條件判斷)

如果你能獨立解開這題,就代表你已經真正掌握了模組一的所有核心觀念。

自動販賣機找零

問題情境:小威在學校福利社打工,負責操作一台自動找零機。福利社生意不錯,下課時間一到就會湧進一大群同學買飲料和零食,結帳速度必須很快。每次顧客投錢買東西,機器就要自動判斷錢夠不夠,如果夠的話,還要計算要找多少錢,並且盡量用大面額的硬幣,讓顧客拿到的硬幣數量最少,這樣也能減少零錢不夠找的狀況。小威想寫一支程式來模擬這台機器,但他不確定怎麼把「找零的邏輯」變成程式碼。你能幫他嗎?

🔍 思考引導

🧩 把大問題拆成小問題...

這題乍看很複雜,但可以分成幾個步驟:

  1. 第一步 — 判斷金額是否足夠:比較投入金額和商品價格,決定要繼續找零還是直接結束。
  2. 第二步 — 計算找零總金額:用投入金額減去商品價格,得到需要找回的總金額。
  3. 第三步 — 計算各面額硬幣數量:從最大面額(50 元)開始,一層一層往下算,這一步要怎麼做?
  4. 第四步 — ???:算完一種硬幣之後,剩下的零錢怎麼辦?繼續拿去算下一種面額嗎?

每個步驟單獨來看都不難,難的是把它們串起來!

💭 如果用數學來表達...

假設找零總金額是 C,找零的過程可以這樣表示:

n50=C÷50,r1=Cmod50n10=r1÷10,r2=r1mod10n5=r2÷5,r3=r2mod5n1=r3

其中 n50n10n5n1 分別是各面額的硬幣數量,r1r2r3 是每次除完之後的餘數(也就是「還沒被找掉的金額」)。

想想看:Python 裡的哪兩個運算子,剛好對應到「整除」和「取餘數」?

輸入格式

  • 第一行:正整數 P,代表投入金額(元)(1 ≤ P ≤ 10000)
  • 第二行:正整數 Q,代表商品價格(元)(1 ≤ Q ≤ 10000)

輸出格式

  • 若 P < Q:輸出一行 金額不足
  • 若 P ≥ Q:共輸出五行:
    • 第一行:找零金額
    • 第二行:50 元硬幣數量
    • 第三行:10 元硬幣數量
    • 第四行:5 元硬幣數量
    • 第五行:1 元硬幣數量

範例一

輸入輸出
10034
660
3
0
4

範例說明

  • 第一步:投入 100 元,商品 66 元,100 ≥ 66,金額足夠。
  • 第二步:找零金額 = 100 − 66 = 34 元
  • 第三步:50 元硬幣 = 34 ÷ 50 = 0 枚,剩餘 34 元。
  • 第四步:10 元硬幣 = 34 ÷ 10 = 3 枚,剩餘 4 元。
  • 第五步:5 元硬幣 = 4 ÷ 5 = 0 枚,剩餘 4 元。
  • 第六步:1 元硬幣 = 4 枚
  • 最終輸出:第一行 34,接著 0304

範例二

輸入輸出
50金額不足
80

老師的提示

找零的核心在於「剝洋蔥」:每算完一種面額,就用 % 取出剩餘金額,再把剩餘金額拿去算下一種面額。還記得 // 是整除、% 是取餘數嗎?把這兩個運算子搭配使用,從 50 元一路剝到 1 元,答案就出來了。


搞定了嗎?不管結果如何,走到這裡就已經很了不起了。

好了,模組一的東西你都掌握了嗎?不管怎樣,讓我先偷偷告訴你模組二要學什麼——光是想到就覺得很帥。

模組二預告:整理與征服大資料

你現在能跟電腦一問一答了。但如果有 100 筆資料要處理呢?

  • 讀 100 個學生的成績 → 寫 100 次 int(input())
  • 找出最高分是誰 → 寫 100 個 if

當然不是。

模組二會教你兩個超級強大的新武器:

  1. 迴圈(Loop):讓電腦幫你重複做同一件事,不管是 100 次還是 10000 次
  2. 串列(List):把一堆資料整整齊齊地排成一排,想取哪個就取哪個

有了這兩招,你就能處理「大量資料」,而不是只能一筆一筆硬幹。

📷 圖 14:100 行 input 對比迴圈 3 行的四格漫畫(AI 製圖)

📷 圖 14:100 行 input 對比迴圈 3 行的四格漫畫(AI 製圖)


到這裡,模組一「與電腦溝通的基礎」就正式完結了。

你從零開始,學會了讓電腦說話、聽話、記東西、算數學、做判斷。這些是所有程式語言的基礎中的基礎,不管你以後學什麼語言,這些觀念都是通用的。

模組二見。加油 (๑•̀ㅂ•́)و✧