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」(可從此處 https://reurl.cc/NpbE0n 下載)開始吧!

圖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)