以 fChart 馭 Python:
迴圈結構(5/11)
Line:ted2016.kpvs
Email:Lct4246@gmail.com
FB:http://gg.gg/TedLeeFB/
Email:Lct4246@gmail.com
FB:http://gg.gg/TedLeeFB/
Blog:http://gg.gg/TedLeeBlog/
June 26, 2022
[1]
1. (for)01.前測_顯示5次大家好:說大家好五次。
接續著本 fChart 系列前文《以 fChart 馭 Python:練 fChart 了沒?(1/11)》(https://reurl.cc/oeDGN3),我們將針對圖1 的「10 大項目之 4」的 26 個實例(可從此處 下載),從
原始問題描述到以流程圖表達解法,再對照流程圖寫出 Python 語法程式
的過程詳細說明整個的問題解決(problem solving)過程。
原始問題
我們試圖把會安老師編排的範例一一還原到初始的問題形式來帶領讀者們思考:
問題 --- 流程圖 ---> 解法
一連串的問題解決奇幻之旅。筆者再次強調,
「解決問題」是編程訓練的終極目的,而「流程圖」乃為邏輯表達之母(積木拼圖湊答案不是)。
前測
後測
18. 18.後測_顯示5次大家好:題目和前測的第 1 題相同。
迴圈(loops)的流程圖與其對應的 Python 語法
絕大部份程式語言支援的重複結構不外乎以下三種:- 前測型:條件成立才會進入迴圈執行,也就是所謂的 while 迴圈(while loop)。
- 後測型:先執行迴圈區塊後才決定要不要繼續重複下去,例如:C 語言的 do while 或 其他語言的 repeat until。
- 固定次數型:1 和 2 這兩型通常用在重複的次數是根據條件決定,而不是固定的。所以,若事前已清楚要重複執行的次數,就使用本型來處理。也就是所謂的 for 迴圈(for loop)。
值得注意的是,1 可以完全模擬並取代 2 和 3。所以,後文只著墨在「未知迴圈執行次數使用 1;已知則使用 3」、只使用前測判斷。強烈建議初學者以此規則學習,較容易理解與運用迴圈的技巧!緊接著,我們再來細談「不定次數的 while 迴圈」和「固定次數的 for 迴圈」。
- 前測型:條件成立才會進入迴圈執行,也就是所謂的 while 迴圈(while loop)。
- 後測型:先執行迴圈區塊後才決定要不要繼續重複下去,例如:C 語言的 do while 或 其他語言的 repeat until。
- 固定次數型:1 和 2 這兩型通常用在重複的次數是根據條件決定,而不是固定的。所以,若事前已清楚要重複執行的次數,就使用本型來處理。也就是所謂的 for 迴圈(for loop)。
不固定次數的 while 迴圈
請觀察圖 2 和圖 3 上方流程圖中用紅框框選的結構,它們就是完全一模一樣。所以,到底迴圈會執行只次要回到題目的需求來看。以圖 2 和 3 而言,它們都是要解 1 + 2 + 3 + ... + 10 的和,很明顯的需要做十次累加的動作,因此,就用 for 迴圈吧。
其中,我們會用一個迴圈控制變數(counting variable)來計次。在未達到累計的目標時,就不斷地重複執行要重複的指令。一旦達標後迴圈的任務就宣告結束了。
Python 的 while 迴圈語法規則如下,初學者易犯的語法錯誤(syntax error)如注意事項 1 和 2,尤其是 1,年輕世代的朋友常常會把半形「:」打成全形「:」。
while (判斷條件): #注意 1:小寫的「 :」表下一行開始為迴圈區塊(block)
要重複執行的指令區塊 # 注意 2:區塊內皆需內縮 4 個空白(space),而且要一致對齊
固定次數的 for 迴圈
如前所述。Python 的 for 迴圈語法規則如下。請留意注意事項 1 中,迴圈控制變數 i 會從 1 跑到上限 n,但在 Python 中要用「(n + 1)」來表達──不包括 n + 1。
for i in range(1, n + 1): #注意 1:小寫的「 :」表下一行開始為迴圈區塊;i = 1~n
要重複執行的指令區塊 #注意 2:區塊內皆需內縮 4 個空白,而且要一致對齊
流程圖與 Python 語法對轉
1. 01.前測_顯示5次大家好:在 Code Editor 中一一將流程圖轉換到 Python 程式碼後以「01.前測_顯示5次大家好.py」存檔,我們就能看到如圖 4 所對應的執行結果。
圖 4:重複打招呼五次
後測
26. 跳出迴圈_顯示1至5:因為 1 == 1 為恆真,造成程式陷入無窮迴圈(infinite loop),故設定 i > 5 為跳離的條件 。
26. 跳出迴圈_顯示1至5:因為 1 == 1 為恆真,造成程式陷入無窮迴圈(infinite loop),故設定 i > 5 為跳離的條件 。
沒有留言:
張貼留言