APCS Python・恢復記憶

W01|第一次使用 JMJ:輸入、計算與輸出

今天完成後,我可以

  1. 使用 IDLE 建立、儲存及執行 Python 程式。
  2. 看懂 JMJ 題目的輸入格式、輸出格式與範例。
  3. 使用 input()int()、變數、四則運算與 print()
  4. 在 JMJ 提交 Python 3 程式並判讀基本結果。
  5. 認識整數除法//與取餘數%的意義。

今天的學習路線

跟著教師完成 b001
→ 在自己的電腦執行範例
→ 修改成 b004
→ 提交 b004(課中必做,70分)
→ 完成 b035(課中延伸,30分)
→ 自選課後公式挑戰

b001是教師示範題,不需要提交。本週有「課中練習」與「課後挑戰」兩個題組;下課後課中練習會關閉。

一、認識 IDLE 的兩個視窗

Python Shell

畫面會出現:

>>>

程式執行後,結果會顯示在這裡;遇到 input() 時,也是在這裡輸入資料。

Editor

依序選擇:

File → New File

完整程式應寫在 Editor,而不是把整份程式逐行寫在 >>> 後面。

完成後先儲存為 .py 檔,再按 F5 執行。

二、教師示範:b001 小學生的三角形面積計算

三角形面積公式:

底 × 高 ÷ 2

請跟著教師的廣播畫面,在IDLE中逐字輸入、儲存並執行示範程式。完整程式碼不放在講義中;若畫面已切換,請先根據剛才的操作自行回想,必要時再向教師確認。

三、準備第一次提交

教師示範的b001只需要在IDLE中執行,不必提交到JMJ。完成b004後,再依下列項目進行第一次提交。

常見結果:

結果 意思
Accepted 程式通過目前測資
Wrong Answer 程式可以執行,但輸出結果不正確
Runtime Error 執行時發生錯誤
Syntax Error Python語法有錯誤

四、課堂必做:b004 小學生的梯形面積計算

梯形面積公式:

(上底 + 下底) × 高 ÷ 2

請從剛才的三角形程式開始修改:

  1. 梯形需要輸入幾個數字?
  2. 要增加哪一個變數?
  3. 哪一行公式需要修改?
  4. 為什麼上底與下底相加的部分需要括號?

本題可使用:

程式碼圖片,請自行逐字輸入

提示一

需要記錄哪些資料?

需要分別記錄上底、下底與高,共三個變數。

提示二

程式骨架
程式碼圖片,請自行逐字輸入

五、課中延伸:b035 發糖果囉(基本題,30分)

17顆糖果平均分給5人:

每人得到 3 顆,剩下 2 顆
17 = 5 × 3 + 2

Python提供兩種不同的除法運算:

程式碼圖片,請自行逐字輸入

請注意,///%的結果不同:

寫法 意義 175的結果
17 / 5 一般除法 3.4
17 // 5 整數除法 3
17 % 5 取餘數 2

b035會依序輸入糖果總數與人數,請輸出每人最多拿到的數量及剩下的數量,各占一行。

程式骨架

需要提示時再展開
程式碼圖片,請自行逐字輸入

六、課後挑戰:數學公式實作

課後題不列入本週課中最低完成要求。建議先完成b005,再挑戰b006

b005 高中生的三角形面積與周長(40分)

輸入三角形的三邊長abc。先計算半周長:

s = (a + b + c) / 2

再使用海龍公式:

面積 = √[s(s-a)(s-b)(s-c)]
周長 = a + b + c

數學課提過:「x次方根可以寫成1/x次方」。因此,有人可能會直覺把平方根寫成:

程式碼圖片,請自行逐字輸入

先不要急著修改,請依序完成:

  1. 預測這段程式應該輸出多少。
  2. 在IDLE實際執行,觀察結果。
  3. Python先計算**還是/
  4. 要把1 / 2當成完整的指數,括號應該放在哪裡?
完成實驗後,再查看運算順序

**的運算順序比/優先,所以原式會被當成:

(value ** 1) / 2

請用括號讓Python先算出1 / 2,再把它當作指數。修改後以value = 16測試,平方根應為4.0

題目要求第一行輸出面積,第二行輸出周長。

b006 高中生的一元二次方程式的根(60分)

公式為:

x = (-b ± √(b²-4ac)) / (2a)

建議不要一次寫成很長的一行,先計算判別式:

程式碼圖片,請自行逐字輸入

輸入可能包含小數,因此應使用float(input())。題目保證a > 0且有兩個相異實根。

公式中的±代表兩個不同的數字,不是Python中的一個運算符號:

較大的根:分子使用 -b 加上根號部分
較小的根:分子使用 -b 減去根號部分

因此請分別建立兩個變數,再分成兩行輸出。不要只寫一個(-b+-d**0.5);Python會把其中的+-理解成「加上一個負數」,只會算出其中一種情況,並不會自動產生兩個答案。

兩個解的程式骨架
程式碼圖片,請自行逐字輸入

兩個空格應分別填入不同的加減運算符號。

七、完成後自我檢查

八、提早完成

若尚未完成b035,請先完成;若已完成,才進入課後挑戰。也可以自行設計三組梯形資料,先手算面積,再用程式驗證。接著嘗試回答:

  1. 如果拿掉公式中的括號,哪一組資料可以看出錯誤?
  2. 如果上底、下底或高有所改變,需要修改程式本身嗎?
  3. 能否只改變變數名稱,但維持程式正確?