2022年1月18日 星期二

以 fChart 馭 Python:運算子與運算式(3/11)

 以 fChart 馭 Python:

運算子與運算式(3/11)

Line:ted2016.kpvs
Email:Lct4246@gmail.com
FBhttp://gg.gg/TedLeeFB/
Bloghttp://gg.gg/TedLeeBlog/

Jan. 18, 2022
88x31.png[1]

接續著本 fChart 系列的前文《以 fChart 馭 Python:練 fChart 了沒?(1/11)》(https://reurl.cc/oeDGN3),我們將針對圖1 的「10 大項目之 2」的 27 個實例,從
原始問題描述以流程圖表達解法,再到對照流程圖寫出 Python 語法程式
的過程詳細說明整個解題的問題解決過程。

圖1:10 大項目之 2。

原始問題

我們試圖把會安老師編排的範例一一還原到初始的問題形式來帶領讀者們思考「問題 --- 流程圖 ---> 解法」一連串的問題解決(problem solving)奇幻之旅:
  1. 02-01.更改變數值:在程式中改變變數的值
  2. 01-02.指定成其他變數值:在程式中指定(assign)變數內容為其他變數的值。一般應用的時機可能會是要保留某變數的舊值(previous value)
  3. 02-03.邏輯運算子and:二擇一的邏輯選擇判斷,如果條件 A(test > 150)「且」條件 B(count != 50) 同時滿足(test > 150 and count != 50),印出「成立」;否則,印出「不成立」,。例如:五科總成績都及格 且 平均為 B 即可申請獎學金。註:關於且(and)、或(or)及非(not)運算請參考 https://reurl.cc/nEZEQ6註:讀者們請注意 and 三個字要全部小寫!
  4. 02-04.邏輯運算子or:承 3,二擇一的邏輯選擇判斷,如果條件 A(test > 150) 「或」條件 B(count <= 50)有一個(含)以上的條件同時滿足時test > 150 or count != 50,則印出「成立」;否則,印出「不成立」,。註:讀者們請注意 or 二個字要全部小寫!
  5. 02-05.扣分程式:+ - * / 四則運算之 -。輸入原始分數 score 及扣分 minus,並將之相減 score - minus 
  6. 02-06.年齡加2:+ - * / 四則運算之 +。將輸入的年齡 age 加二歲 age + 2
  7. 02-07.加法運算:+ - * / 四則運算之 +。求兩數 n1 和 n2 之和(sum) n1 + n2
  8. 02-08.減法運算:+ - * / 四則運算之 -。求兩數之差
  9. 02-09.除法運算:+ - * / 四則運算之 /。求兩數 n1 和 n2 之商(quotient) n1 / n2
  10. 02-10.加法和減法:+ - * / 四則運算之 +。求兩數 n1 和 n2 之和與差(difference) n1 - n2 

  11. 02-11.加法和除法:+ - * / 四則運算之 /。求兩數 n1 和 n2 之和 n1 + n2 與商 n1/ n3
  12. 02-12.執行2次不同運算元的加法:+ - * / 四則運算之 +。計算國語 C 和數學 Math 兩科的總分 Chinese + Math。數學因為目出錯,每人都加十分 Math + 10
  13. 02-13.長方形面積長(length)135 單位,輸入寬(width)後,自動計算出此長方形(rectangle)面積(area) length * width 。註:面積的概念請參 https://reurl.cc/KpXgGg,它在 108 新課綱是排在國小階段教授(https://reurl.cc/2D8q2X) 。
  14. 02-14.正方形面積:輸入邊長(side),自動計算正方形(square)面積 s * s
  15. 02-15.圓面積:定義圓周率常數(constant)PI (編程界習慣以全大形(upper case)的英文字母來表之,請讀者們務必養成這個習慣,因為我們寫出的曠世鉅作是要來和世界各國的朋友交流的喔!)的為 3.1415926,並在程式中設定(hard code)半徑 r(radius)為 21。然後計算此圓的面積 PI * r * r。註:圓面積的概念在 108 新課綱是排在國中階段教授(https://reurl.cc/2D8q2X) 。
  16. 02-16.三角形面積:輸入三角形的底 b(base)高 h(height),算出三角形面積 (b×h)/2
  17. 02-17.三角形周長:輸入三角三個邊的邊長 a、b、c,計算出它的周長(circumference)a + b + c。註:周長的概念在 108 新課綱是排在國小階段教授(https://reurl.cc/2D8q2X 。
  18. 02-18.圓周長
  19. 02-19.計算BMI值。 
  20. 02-20.溫度轉換公式_華氏轉攝氏
  21. 02-21.溫度轉換公式_攝氏轉華氏
  22. 02-22.數學方程式
  23. 02-23.數學方程式2
  24. 02-24.數學方程式3
  25. 02-25.計算二科成績總分: 
  26. 02-26.計算三科平均成績: 
  27. 02-27.計算今年幾歲

流程圖符號識讀 

本文的範例中使用了
結構化程式設計(structural programming)選擇結構(selective structure)在不套疊(nested)的單層情況下,它會有判斷條件「成立」「不成立」的抉擇。此外,我們也可能使用複合(compound)判斷條件(且 and、或 or、非 not…)來表達某些邏輯判斷條件,例如:在圖 中,若菱形的判斷條件滿足時往下方的 YES 走;否則往右邊的 NO 走。它對應的 Python 語法如下。請留意:英文半形的「:」表示以下的指令(instructions)是包在縮排(identation)(四格空白鍵(space)起首 [2])的區塊(block)中的。
if ():

   #條件成立的敘述

else:

    #條件不成立的敘述


圖 1:結構化程式設計的選擇結構

流程圖與 Python 語法對轉

1. 02-01.更改變數值:將圖 3 中「print("Hello World!")」指令中雙引號內的輸出字串為「print("我的第一個流程圖")」,存成「01-01.輸出第一個流程圖程式.py」後,再按下後,便可以執行出原流程所要達成的結果。,其中,圖 3 流程圖中的 LF 為 line feed(換行)。註:本例介紹 print("印完換行的輸出字串") 的語法。

02-01.更改變數值

2. 01-02.指定成其他變數值:
3.  

問題解決示例

  1. 問題
  2. 流程圖
  3. 解法


  1. 六種授權條款
  2. Python 語言的縮排方式有四個(或以上)空白鍵或定位鍵(tab)。此外,縮排的方式更是要一致,也就是說:不能混用!筆者在國中教授 Python 時看到為數不少的學生們不斷的犯此「縮排錯誤(identation error)」(區塊內的指令縮排方式凹凹凸凸),也許和他們這個世代強調「個人自由」而不喜被死板板的教條約束有關吧?

2021年12月31日 星期五

以 fChart 馭 Python:變數與輸出輸入(2/11)

以 fChart 馭 Python:

變數與輸出輸入(2/11)

Line:ted2016.kpvs
Email:Lct4246@gmail.com
FBhttp://gg.gg/TedLeeFB/
Bloghttp://gg.gg/TedLeeBlog/

Dec. 31, 2021
88x31.png[1]

接續著本 fChart 系列的前文《以 fChart 馭 Python:練 fChart 了沒?(1/11)》(https://reurl.cc/oeDGN3),從此篇開始,我們將針對每個項目的若干實例中,
原始問題描述以流程圖表達解法,再到對照流程圖寫出 Python 語法程式
的過程詳細說明整個解題的問題解決過程。
就讓我們先從圖1 的「10 大項目之 1」開始吧!

圖1:10大項目之1。

原始問題

我們試圖把會安老師編排的範例一一還原到初始的問題形式來帶領讀者們思考「問題 --- 流程圖 ---> 解法」一連串的問題解決(problem solving)奇幻之旅:
  1. 01-01.輸出第一個流程圖程式:印出「我的第一個流程圖」這串字
  2. 01-02.輸出二行_不換行:同行印出「學號: 1234」和「姓名:王小明」兩串字
  3. 01-03.輸出二行_換行:第一行印「學號: 1234」,第二行印「姓名:王小明」兩串字
  4. 01-04.輸出1個變數值:將變數的值印出
  5. 01-05.輸出3個變數值:將三個變數的值分三行印出
  6. 01-06.輸出運算式的值:印出一算式的運算結果
  7. 01-07.輸入與輸出整數值:將輸入的整數值印出
  8. 01-08.輸入與輸出浮點數:將輸入的實數(帶有小數點的數,例如:3.14)值印出
  9. 01-09.輸入與輸出匯率:印出由鍵盤輸入的 1 美金兌換台幣的即時匯率

流程圖符號識讀 

流程圖以橢圓的符號往下開展出一連串的執行流程後再以結尾。除此之外,本項目的 9 個問題會使用到以下三個平行四邊形的符號:
  1. 鍵盤輸入(input)。它對應的  Python 語法為 input() 函式
  2. 螢幕輸出(output)。它對應的 Python 語法為 print() 函式
  3. 處理/行動(action)。本文的 9 個範例是用它來描述變數的賦值(assignment)

流程圖與 Python 語法對轉

以滑鼠雙撃 .fpp 檔開啟會安老師設計的流程圖(設定方式如文末的附錄),按下 FlowProgramming_Edit 上方工具列最左側的便可在 fChartCodeEditor 中撰寫流程圖範例所對應的 Python 程式碼(視窗右下角的程式語言要選到 Python語法)。Python 的初學者可先從它的上方的 Python 的六大類語法選(圖 2)中選擇對應的類別來自動產生對應的程式語法。註:這個語法選單就好像積木程式的「積木抽屜」一樣,只是我們希望從直接從基本語法進入 Python 廣闊的編程世界!

圖 2 :Python 的六大類基礎語法選單

1. 01-01.輸出第一個流程圖程式:將圖 3 中「print("Hello World!")」指令中雙引號內的輸出字串為「print("我的第一個流程圖")」,存成「01-01.輸出第一個流程圖程式.py」後,再按下後,便可以執行出原流程所要達成的結果。,其中,圖 3 流程圖中的 LF 為 line feed(換行)。註:本例介紹 print("印完換行的輸出字串") 的語法。

圖 3:選取輸出/入類別的輸出符號中的換行訊息便會自動產生對應的 Python 程式碼。

2. 01-02.輸出二行_不換行在 fChartCodeEditor 中選

以產生對應的兩行 Python 程式碼

,將輸出字串修改為正確的文字後以「01-02.輸出二行_不換行.py」存檔,便可得到如圖 4 的執行結果。註:本例介紹 print("印完不換行的輸出字串", end = "") 的語法 [3],其中 "" 表示空字串(null string)



圖 4:選取輸出/入類別的輸出符號中的不換行和換行訊息便會自動產生兩行對應的 Python 程式碼。

3. 01-03.輸出二行_換行從 fChartCodeEditor 中選產生第一行程式碼後,緊接著,因為圖 5 流程圖中的兩個螢幕輸出符號相同,所以,直接在 fChartCodeEditor 以 copy/ paste(複製/貼上) 來處理較快(即,已經會跑了就不用再慢慢爬)。最後,以「01-03.輸出二行_換行.py」存檔,再按下後就能看到語法程式的執行結果。

 
圖 5:連續印出兩行換行訊息的執行結果。

4. 01-04.輸出1個變數值在 fChartCodeEditor 選單中依序選取
這兩個選項以產生兩行對應的語法。接著,依圖 6 流程圖符號上的內容修改指令。
最後,以「01-04.輸出1個變數值.py」存檔,再按後就能看到語法程式的執行結果。註:本例介紹變數賦值 變數名 = 值串字轉換函式 str()  的語法。

圖 6:印出一個變數內容。

5. 01-05.輸出3個變數值:承4,因為我們已經有印出一個變數本的經驗了,讀者可試著仿照上例,跳過指令選單,直接對照著流程圖敲入程式(圖7)。然後,以「01-05.輸出3個變數值.py」存檔,再按後就能看到語法程式的執行結果。

圖 7:印出三個變數內容。

6. 01-06.輸出運算式的值:承5,從指令選單中選擇印出變數值並換行的選項兩次,再依圖 8 修改指令後,以「01-06.輸出運算式的值.py」存檔,再按後就能看到運算式(expression)的計算結果。

圖 8:印出運算式內容。

7. 01-07.輸入與輸出整數值:承 4,本例再加上從鍵盤輸入數字的指令。請留意,input() 會將鍵盤敲入數字視為「字串」,所以,我們需要再以 int() 函式將文字型數字轉回整數值。最後,以「01-07.輸入與輸出整數值.py」存檔,再按
後就能看到 Python 程式的結果。註:本例介紹 Python 內建的 input("提示文字") 函式來達成。此函式的完整控制程式碼可參考 https://reurl.cc/8W2bqg

圖 7:印出輸入的整數值。

8. 01-08.輸入與輸出浮點數:承 7,從選單中選擇浮點數輸入,依圖 8 修改程式碼後以「01-08.輸入與輸出浮點數.py」存檔後再按下就能看到 Python 程式的結果。請記得要用 float() 函式將讀入的文字型浮點數轉為原浮點數值。

圖 8:印出輸入的浮點數數值。

9. 01-09.輸入與輸出匯率:承 8,以「01-09.輸入與輸出匯率.py」存檔後執行程式碼便可得到 圖 9 的結果。

圖 9:印出輸入的美金匯率。

附錄:fChart 的安裝與環境設定

解壓縮(decompress) 讀者們下載我們還原為英文界面 Windows 版的 fChart(https://reurl.cc/ZrarRA)後,將之解壓縮到磁碟機的根目錄(root directory)下(例如:D:\)。此時,所有 fChart 的檔案會解到「fChartPython6_en」這個資料夾之中(圖)。

圖:下載 fChartPython6_en.zip 並解壓縮到 D:\。 

檔案屬性關聯(association) 將設定滑鼠雙撃(double click)就能以「FlowProgramming_Edit.exe」立即開啟 .fpp 檔(圖)。

圖:設定 .fpp  檔的預設開啟程為 FlowProgramming_Edit.exe。


  1. 六種授權條款
  2. 應該會有讀者們疑惑:為什麼學程式設計都要從「文字模式(text mode)」開始?筆者暫不回答這個問題,請讀者們學到了「視窗程式設計(Window Programming)」後再回頭來審視此問題。
  3. Python 號稱是語法格式(format)最彈性的程式語言,其優點是較不會有硬梆梆的嚴格語法規定。但也因為這樣的彈性(flexible),造成格式紊亂而不一。建議讀者先以會安老師在 fChart 中所使用的語法作為初學範本。待日漸熟稔之後,再行調整出自己的編程風格(coding style)