Python while迴圈(loop)用法:密碼驗證及國中數學程式解題

Python while迴圈在條件成立時會的一直循環執行,通常會搭配if判斷語句避免無限重複。本以輸入密碼驗證及國中數學題目為例,介紹如何設計計數器相關程式。

一、While迴圈用法

While作用如同其英文字義,當條件成立時才執行迴圈程式,所以這裡看到在程式第1行先設定「驗證」這個變數的值為「true(真)」,然後「While 驗證:」表示預設條件成立執行迴圈,首先以input函數讓使用者輸入文字,這裡會提示「請輸入密碼」,並且將使用者所輸入文字透過int函數轉化資料類型為整數(integer),接著設計if判斷所輸入數字是否為正確密碼「7」,不等於的話顯示「密碼錯誤」,否則表示「密碼正確」,將「驗證」這個變數更改為「False」,此時While條件不成立,結束程式執行。

初學者關於Python基本設定及輸入輸出,可以參考贊贊小屋相關的分類文章

關於Python if條件句的用法,同樣可請參考贊贊小屋先前文章

二、密碼輸入驗證

執行程式後會提示輸入密碼,先故意輸入錯誤的密碼:1跟2,果然會告知「密碼錯誤!」,而且因為密碼錯誤條件一直是成立的,驗證變數維持為真,除非輸入正確密碼「7」,才會去執行if條件句裡面的程式,顯示「密碼正確」,同時將驗證變數值更改假,While條件不再成立,結束整個程式執行。

從這個簡單的密碼輸入程式,可以知道說如果密碼一直輸入錯誤的話,它會一直執行,這是在設計While迴圈時要特別注意的地方,它有可能會造成無限循環,程式始終在執行不會結束。

三、迴圈計數器設計

在執行迴圈程式時很多情况會使用計數器去瞭解目前是只跑了第幾次的迴圈,例如在先前程式的基礎上,再新增一個預設值為「1」的「錯誤次數」變數,每一次輸入密碼錯誤便加1(錯誤次數+=1),並且在顯示密碼錯誤時新增錯誤次數的報告,這個便是一個簡單的計數器範例。

四、密碼錯誤次數

實際執行程式果然會顯示密碼錯誤次數,直到輸入正確密碼為止。

五、簡單數學題目

在瞭解了While迴圈用法之後,設計程式解决國中數學問題。先設定一個從零開始的自然數作為變數,它會自動加1直到條件成立,也就是直到符合題目要求。這裡的數學問題是「除3除餘2,被5除餘3的最小自然數」,自然數一直加1,直到符合數學問題的if條件判斷式,程式就會把「驗證」設定為「False」,顯示答案並結束程式。

執行結果便是從1開始累加到條件成立為止,不用自己一根手指一根手指算,程式會很老實、機械式的計算,但速度比閃電還快,一下子得到正確答案,亦即符合條件的最小自然數8。

六、複雜數學題目

學習數學的重點是找到解題方法與思維,設計程式也是如此。上個步驟已經藉助Python解决簡單的數學題目,很容易可以再加上各式各樣的條件,例如被3除餘2、被5除餘3、被7除餘2的最小自然數,完全不用自己絞盡腦汁計算,像這種數學題目交給程式吧,答案是「23」。

七、5個最小自然數

國中數學有時候也是麻煩,會有題目是「滿足被5除餘2、被7除餘3的自然數,而且要從最小開始列出5個」,這個可以用先前第三步驟的計數器模型先宣告「個數」變數,預設值為「1」,然後每次有符合條件的自然數時,除了將這個自然數列印出來,同時把個數加1,並且進一步在每次有符合條件自然數的情況之下,判斷是否個數已大於大,是的話更改「驗證」值為「False」。此時程式迴圈到While要準備再執行時,它會赫然發現「驗證」這個條件已經不成立,於是下面那一連串縮排的程式都直接忽略,而在跳出迴圈後接下去已經再也沒有程式碼了,因此不但結束迴圈同時也結束程式。執行結果就會剛好列出符合條件的最小5個自然數,正是這道數學題的正確答案。

Python While結束迴圈

While迴圈是不特定次數的循環執行,如果條件維持成立,它會一直執行下去沒完沒了,因此設計這類程式必定要有個退場機制,本篇文章範例是使用每次自動累加的計數器搭配if條件判斷,不過在Python或者是大部分程式程式還有一些其他方法,例如也可以用時間作為條件,一段時間過後或者到達某個時間點即條件成立結束迴圈,這個在後續的系列文章有適當範例再為讀者介紹。

每天學習,每天充電:Python文章合集

YouTube video

最新文章: