運行--起來,一擺干焦會使檢查一个數字,下一咧就愛重來。咱若有真濟數字欲處理,有夠麻煩。敢有法度予伊運行起來了後,就踮遐一直等咱問咧? 這時,咱共這的例小改一咧:
咱運行一咧:
$ python3 judge-non2-3.py
input an integer:3
input an integer:8
input an integer:443
This is NOT multiple of 2 or 3
。。。
這就是 while 的作用: 仝款的 code,予伊跳--轉來,閣走一改。
這種效果,就敢若程式佇遐踅箍輪。所以,嘛有人共伊號做 while 圈 (while loop)。啥物時陣跳--出來? 就看 while 後彼咧判斷式是毋是真个(True),變做假个 (False)
True 伊本身是保留字,嘛是出奇仔簡單的判斷式。伊永遠是真个,袂改變,就表示 while 內的 code,永遠佇遐輪迴,不得超生。若是想欲愛伊有機會跳--出來,你就愛寫會變化的判斷式,比如講:
按呢判斷式 i < 5,i uì 0 開始,一輾加 1。佇咧 i 比 5 較細的時,i < 5 算出來攏是 True。等到 i 成作 5,i < 5 就成做 False,就自動跳--出 while loop。若是無窮無盡的箍輾,干焦會使靠 Ctrl-C 這種共強--的方式跳--出來。
另外一種方式,是用 break共 while loop 拍予破,咱看下跤這的例:
伊的效果佮頂一个仝款,毋過,伊是用 if > 5 來拍破 while 圈。break 嘛是一咧關鍵字,伊的作用就是用來拍破箍輾。
閣有一款變化,是佮 while loop 縮予短,莫行到 while 的尾溜,這愛用保留字 continue。請看這的例:
伊是佮頂个一模一樣的效果,毋過運用 continue 來躘--過後壁的程式。所以,若是 2 抑是 3 的倍數,就隨跳轉去 while 起頭遐重來,袂閣運行下跤的 print(),咱嘛免共 print() 囥佇 if-statement 內囉。
while-statements 是uì while 𤆬頭彼逝開始,一直到上尾溜。因為後壁的逐逝攏向正手爿勼--入來一咧 TAB。
若較斟酌看,你會發現 if-else-statement 裡的 pass 抑是 print(),毋但勼一个 TAB,in 勼兩的 TAB。這表示 pass/print() 是踮佇 while-statement 裡的 if-statement 裡。
遮其實予咱一咧寫程式的觀念,是真重要的觀念: 程式是有層次个。咱佇寫程式的時陣,寫每一逝 code,都愛真清楚伊是佇佗一棧。寫程式干焦佇起樓仔厝,每一棧攏愛清清楚楚,樓仔厝才會勇,才會媠。
就親像露西亞(Russia)尪仔,捘開外口的尪仔,內底是較細身的尪仔,一重閣一重,愈來愈細身。咱會使一咧 statement 內底包 statement,無限制包幾棧,只要你家己會記--得,莫亂--去。