Python break及continue迴圈中止控制:程式該如何處理錯誤

Python迴圈程式往往需要適當的依條件中止迴圈,本文以料號輸入為例,介紹如何利用break及continue語句,設計編碼不符時可結束輸入或者錯誤超過三次的處理機制。

一、建立料號程式

先簡單設計一個輸入料號的小程式,用到了input、type、int等函數設定X、Y、Z三個變數,作用分別為輸入文字、瞭解資料類型、將文字轉換為整數,最後用print函數將這三個變數顯示出來,從截圖可以同時看到程式執行的結果。

Python break及continue迴圈中止控制:程式該如何處理錯誤 1

二、If條件選擇流程

通常公司對於存貨料號會有一定的編碼原則,假設統一是五位數,在此設計條件判斷語句,瞭解所輸入的料號是否符合編碼原則。如果是小於10000或者大於99999,表示有問題,會先以「\n」換行,再顯示「請輸入有效料號」,再換行提示「有效料號為五位數字」。

關於Python的If Then條件判斷,可參考贊贊小屋相關文章

Python break及continue迴圈中止控制:程式該如何處理錯誤 3

三、While及if else

上個步驟只有設計錯誤如何處理,這裡進而完善正確及錯誤的狀況。先設定一個「驗證」變數為真,然後以此變數進行While條件迴圈,除了上個步驟的錯誤處理,補充一個else,意思是否則(else)表示輸入的料號有效,換行後顯示「已經建立成功!」,並且將驗證變數設定為假,此時條件已經不成立了,結束While迴圈,而由於Whie迴圈之後沒有其他程式,因此也就是結束程式執行。

注意到這裡在特定文字前面或者後面都加了「\n」,在輸入及輸出時適當產生空行的效果。

關於Python的Whie條件迴圈,可參考贊贊小屋相關文章

Python break及continue迴圈中止控制:程式該如何處理錯誤 5

四、巢狀if及break

為了提供操作者更完善的選擇機制,希望如果輸入的料號有誤時,出現「是否結束」的選項,在原有If條件判斷裡再套用一個條件式,形成巢狀結構,如果使用者輸入」Y」,內層條件成立,會顯示「歡迎再次使用!」,並且以break結束整個While迴圈,因此結束程式。

Python break及continue迴圈中止控制:程式該如何處理錯誤 7

五、測試結束功能

實際測試,輸入錯誤料號果然會提示是否結束,按N繼續嘗試,又輸入不符規則的料號,最後輸入「Y」結束程式。注意到依照上個步驟所設計的程式,這裡就算不輸入「N」,只要輸入其他內容或者直接Enter鍵,同樣會繼續嘗試輸入的程式迴圈,唯有輸入「Y」才會結束程式。

Python break及continue迴圈中止控制:程式該如何處理錯誤 9

六、迴圈continue

最後再一次優化輸入錯誤的處理程式,首先第二行程式:「錯誤次數=1」,設計原始值為「1」的變數,在輸入錯誤但仍然不願放棄的情況下,會自動累加錯誤次數(「錯誤次數+=1」),同時再追加一層If巢狀條件判斷,超過三次錯誤則先換行再提示「已經輸入錯誤三次,再見!」,直接以break跳出迴圈並結束程式。

如果第三層巢狀判斷不成立,也就是輸入錯誤尚未超過三次,簡單用一個「continue」,它的作用不是像break結束整個迴圈,而是直接跳到整個迴圈開始的地方(「While 驗證」),繼續下一輪的迴圈,以範例程式而言,就是再輸入料號。

Python break及continue迴圈中止控制:程式該如何處理錯誤 11

七、錯誤次數測試

執行測試,一直輸入錯誤的兩位數料號,提示是否結束,但我不願意接受,一直嘗試輸入,到最後程式終於受不了,提示「已輸入錯誤三次,再見」,結束了整個程式執行,完全符合設計用意。

Python break及continue迴圈中止控制:程式該如何處理錯誤 13

Python與VBA迴圈控制

本篇文章介紹Python的break與continue語句,它的作用是在執行迴圈的過程中,希望當特定條件成立時結束整個迴圈或者直接跳到下一個迴圈,文章範例是當使用者輸入有誤時該如何處理。可以想見在很多場合都有可能需要類似的流程控制,因此可以說是一般程式語言很普遍會有的功能。在Excel VBA也許沒有直接的break或者continue,但是透過Exit for和Goto語句,適當設計也可以實現類似效果。

系列文章:贊贊小屋Python文章合輯

Python break及continue迴圈中止控制:程式該如何處理錯誤 15
歡迎加入贊贊小屋電腦程式臉書社團!