高通台灣AI黑客松|競賽說明會
|

以 fChart 馭 Python:條件判斷

   

作者:Ted Lee

接續著本fChart系列前文《以fChart 馭 Python:練fChart了沒?》,我們將針對圖1 的「10 大項目之 3」的 30 個實例(可從此處下載),從原始問題描述到以流程圖表達解法,再對照流程圖寫出 Python 語法程式的過程詳細說明整個的問題解決(problem solving)過程。

圖 1:10 大項目之 3

原始問題

我們試圖把會安老師編排的範例一一還原到初始的問題形式來帶領讀者們思考:

問題 — 流程圖 —> 解法,一連串的問題解決奇幻之旅。筆者再次強調,「解決問題」是編程訓練的終極目的,而「流程圖」乃為邏輯表達之母(積木拼圖不是)。

單選

  1.  03-01.單選_絕對值:計算輸入數字的絕對值(absolute value)。絕對值的概念會在 108 新課綱的高中數學會學到。
  2.  03-02.單選_需加件外套:當輸入的氣溫在 20 度以下時,fChart 媽媽會跳出來提醒要加件外套喔。
  3.  03-03.單選_是否成年:判斷年齡是否已滿 18 歲。
    4-9. …(請讀者自行練習)。

二選一

10. 03-10.二選一_成績是否及格:根據成績顯示及格或不及格

多選一

18. 03-18.多選一_成績判斷:將百分成績根據級距(range)來轉換到對應的文字等第。不等式的概念會在 108 新課綱的國中數學會學到。

巢狀(nested)條件

27. 03-27.巢狀條件_3個數字比大小:找出 a、b、c 三數中值最大的。

流程圖與 Python 語法對轉

單選

1. 03-01.單選_絕對值:本範例需使用條件判斷(condictional decision)邏輯敘述。圖 2 左側流程圖在說明絕對值的數學定義 ,這是一個二選一的判斷式,在流程圖中以菱形符號來表示。判斷條件(value < 0)寫在符號內,條件成立往 YES 分支走(value = – value,例如: -5 取絕對值為 -(-5) = 5);否則往 NO 走。請參考前著《以 fChart 馭 Python:運算子與運算式》內「流程圖符號識讀」那一節的說明。

最後再以「03-01.單選_絕對值.py」存檔執行後就能看到執行結果。註:絕對值的概念在 108 新課綱是排在高中數學科教授 。

圖 2 :計算輸入數字的絕對值

2. 03-02.單選_需加件外套:在 Code Editor 中一一將流程圖轉換到 Python 程式碼後以「03-02.單選_需加件外套.py」存檔,我們就能看到如圖 3 所對應的執行結果。

圖 3 :根據氣溫來判斷是否需要添加外套

3. 03-03.單選_是否成年:在 Code Editor 中一一將流程圖轉換到 Python 程式碼後以「03-03.單選_是否成年.py」存檔,我們就能看到如圖 4 所對應的執行結果。

圖 4 :18 歲成年的判斷

4-9. …(請讀者自行練習)。

二選一

二選一和單選不同之處在於判斷條件不管成立與否都有其對應要處理的邏輯。讀者可以比較圖 4 和圖 5 就可以細細分別。
這也就是 會安 老師說的:

用少少的流程圖符號,就能表達問題的演算方法,豈不妙哉!

讀者不妨將 fChart Interprter 工具列的 Delay 調到最大,讓工具進入單步執行(single-step execution)的除錯模式模式(debugging mode),然後細細追縱(trace)邏輯判斷真偽各自的分岔處理。

註:程式碼追蹤是學習「看」懂程式原始的編程邏輯之紮實蹲馬步功法。再上乘的功夫都是深築於厚實的基本功的!

10. 03-10.二選一_成績是否及格:在 Code Editor 中一一將流程圖轉換到 Python 程式碼後以「03-10.二選一_成績是否及格.py」存檔,我們就能看到如圖 5 所對應的執行結果。

圖 5 :顯示成績及格與否的文字

多選一

18. 03-18.多選一_成績判斷:在 Code Editor 中選用選項,就能產生如下對應的語法。最後再以「03-18.多選一_成績判斷.py」存檔就能看到如圖 6 的執行結果。

if (第一段條件):
#
elif (第二段條件):
#
elif (…):
#
else: #其他
#

圖 6 :百分級距成績轉換為相對應的文字等第

巢狀條件

27. 03-27.巢狀條件_3個數字比大小:在 Code Editor 中一一將流程圖轉換到 Python 程式碼後以「03-27.巢狀條件_3個數字比大小.py」存檔,我們就能看到如圖 7 所對應的執行結果。其中,我們是用到雙層的巢狀 if-else 語句來套疊。

if (判斷條件1):
#
else:
if (判斷條件2):
#
else: #其他
#

圖 7 :找出三數中值最大的

(作者為本刊專欄作家,本文同步表於作者部落格,原文連結;責任編輯:謝涵如)

Ted Lee

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: Ted Lee

從工程師轉任中學教師,又為了捍衛教育理念,投身成為 STEAM 教育工作者,自稱「無可救藥的人文教育理想主義者」的李俊德(Ted Lee)。

Share This Post On
468 ad

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *