Python 中的循環(huán)
Python 內(nèi)置了兩種類型的循環(huán):
- ?
for
?循環(huán) - ?
while
?循環(huán)
讓我們關注如何while在 Python 中創(chuàng)建循環(huán)及其工作原理。
Python 中的 while 循環(huán)是什么?
Python 中while循環(huán)的一般語法如下所示:
while condition:
execute this code in the loop's body
while 循環(huán)將在條件為 ?True
?時運行一段代碼。它將繼續(xù)執(zhí)行所需的代碼語句集,直到該條件不再為 ?True
?。
while 循環(huán)總是在運行前首先檢查條件。
如果條件評估為?True
?,則循環(huán)將運行循環(huán)體內(nèi)的代碼。
例如,只要?number<10
?,這個循環(huán)就會運行:
number = 0
while number < 10:
print(f"Number is {number}!")
number = number + 1
輸出:
Number is 0!
Number is 1!
Number is 2!
Number is 3!
Number is 4!
Number is 5!
Number is 6!
Number is 7!
Number is 8!
Number is 9!
此處,變量?number
?初始值設置為0。
在運行循環(huán)代碼之前,Python 會檢查條件 ( ?number < 10
?)。
它的計算結(jié)果為 ?True
?,因此打印語句被執(zhí)行并輸出“Number is 0!”到控制臺。
然后number增加1。條件被重新評估,它再次為真,所以整個過程重復,直到number等于9。
在這之前“Number is 9!”被打印同時number遞增,但現(xiàn)在?number=10
?,所以不再滿足條件,因此循環(huán)終止。
while如果不滿足條件,循環(huán)可能永遠不會運行,
例如在此示例中:
number = 50
while number < 10 :
print(f"Number is {number}!")
由于條件始終為 False,因此不會執(zhí)行循環(huán)體中的指令。
不要創(chuàng)建無限循環(huán)
正如您從上面的示例中看到的,while循環(huán)通常伴隨著一個變量,該變量的值在整個循環(huán)期間都會發(fā)生變化。
它最終決定了循環(huán)何時結(jié)束。
如果不添加此行,則會造成無限循環(huán)。
number不會增加和更新。它將始終設置并保持在0,因此條件number < 10將永遠為真。
這意味著循環(huán)將永遠循環(huán)下去。
# don't run this
number = 0
while number < 10:
print(f"Number is {number}!")
輸出:
Number is 0!
Number is 0!
Number is 0!
Number is 0!
Number is 0!
Number is 0!
Number is 0!
...
它無限運行。
這與執(zhí)行此操作相同:
#don't run this
while True:
print("I am always true")
如果你發(fā)現(xiàn)自己處于這樣的境地怎么辦?
按Ctrl+C退出并結(jié)束循環(huán)。
什么是 do while 循環(huán)?
do while其他編程語言中循環(huán)的一般語法如下所示:
do {
loop block statement to be executed;
}
while(condition);
例如,C 中的 do while 循環(huán)如下所示:
#include <stdio.h>
int main(void)
{
int i = 10;
do {
printf("the value of i: %i\n", i);
i++;
}
while( i < 20 );
}
do while 循環(huán)的獨特之處在于循環(huán)塊中的代碼將至少執(zhí)行一次。
語句中的代碼運行一次,然后在代碼執(zhí)行后才檢查條件。
所以代碼首先運行一次,然后檢查條件。
如果檢查的條件評估為真,則循環(huán)繼續(xù)。
在某些情況下,您希望代碼至少運行一次,這就是 do while 循環(huán)派上用場的地方。
例如,當您編寫一個接收用戶輸入的程序時,您可能只要求一個正數(shù)。
代碼將至少運行一次。如果用戶提交的數(shù)字為負數(shù),則循環(huán)將繼續(xù)運行。如果是正數(shù),它將停止。
Python 沒有do while像其他語言那樣顯式創(chuàng)建循環(huán)的內(nèi)置功能。
但是可以使用 while在 Python 中模擬do-while循環(huán)。
如何在 Python 中模擬 do-while 循環(huán)
要do-while在 Python 中創(chuàng)建循環(huán),您需要稍微修改while循環(huán)以獲得與其他語言中的do-while循環(huán)類似的行為。
do-while循環(huán)將至少運行一次。如果滿足條件,則它將再次運行。
而while循環(huán),在另一方面,沒有至少運行一次,實際上可能永遠不會運行。它僅在滿足條件時運行。
因此,假設我們有一個示例,我們希望一行代碼至少運行一次。
secret_word = "python"
counter = 0
while True:
word = input("Enter the secret word: ").lower()
counter = counter + 1
if word == secret_word:
break
if word != secret_word and counter > 7:
break
該代碼將至少運行一次,要求用戶輸入。
它始終保證至少運行一次,使用True,否則會創(chuàng)建無限循環(huán)。
如果用戶輸入正確的口令,則循環(huán)終止。
如果用戶輸入錯誤的密碼超過 7 次,則循環(huán)將完全退出。
該break語句允許您控制while循環(huán)的流程,而不是以無限循環(huán)結(jié)束。
break 將立即終止當前循環(huán)并退出它。
這就是你如何do while在 Python 中創(chuàng)建與循環(huán)類似的效果。
循環(huán)總是至少執(zhí)行一次。如果不滿足條件,它將繼續(xù)循環(huán),然后在滿足條件時終止。