如何在 Python 中模擬 Do-While 循環
已發表: 2022-08-31在本教程中,您將學習如何在Python中模擬do-while 循環。
在任何編程語言中,循環都可以幫助您根據循環條件重複執行某些操作。 Python 支持while和for循環結構,但本身不支持do-while循環。
但是,您可以通過了解它的工作原理來模擬 do-while 循環——使用 Python 中現有的循環和循環控制語句。
您將在接下來的幾分鐘內了解如何執行此操作。 讓我們開始!
什麼是 Do-While 循環結構?

如果您使用 C 或 C++ 等語言進行編程,您可能會遇到 do-while 循環結構。
在 do-while 循環中,循環體中的一組語句(在由花括號分隔的塊內)首先執行,然後檢查循環條件。
您可以直接從您的瀏覽器在 Geekflare 的在線 C 編譯器中運行以下 C 示例。
考慮以下代碼片段:
//do_while_example1 #include <stdio.h> int main() { int count = 1; printf("Do-While loop: \n"); do{ printf("Loop runs..."); }while(count<0); return 0; }
這是輸出。
Output Do-While loop: Loop runs...
在上面的例子中:
-
count
的值為 1,循環條件為count < 0
。 但是,即使循環條件最初為False
,循環也會運行一次。 - 這與僅在循環條件為
True
時才執行的while循環形成對比。
//while_example1 #include <stdio.h> int main() { int count = 1; printf("While loop: \n"); while(count<0){ printf("Loop runs..."); } return 0; }
如前所述,循環條件count < 0
為False
,最初count
變量被初始化為 1。因此在編譯和運行上述代碼時,我們看到 while 循環體中的語句沒有執行。
Output While loop: //loop body does not run!
While vs. Do-While:差異概述
讓我們仔細看看 while 和 do-while 循環之間的區別。

考慮這個例子:
//do_while_example2 #include <stdio.h> int main() { int count = 1; printf("Do-while loop: \n"); do{ printf("%d\n",count); count++; }while(count<5); return 0; }
在上面的代碼單元格中:
-
count
變量初始化為 1。 - 我們使用 do-while 循環。
-
count
變量在每次循環過程中遞增 1,並且循環條件設置為count < 5
。
這是執行如何發生的直觀解釋:do-while 循環如何工作並檢查循環條件四次。

Output Do-while loop: 1 2 3 4
如果您改用 while 循環,這就是我們所擁有的。
//while_example2 #include <stdio.h> int main() { int count = 1; printf("While loop: \n"); while(count<5){ printf("%d\n",count); count++; }; return 0; }
下圖解釋了while循環的執行; 在這個例子中,while 循環檢查循環條件五次。

Output While loop: 1 2 3 4
儘管上述 while 和 do-while 循環的輸出是相同的,但還是有一些細微的差別。
在 while 循環中,首先檢查條件,然後是循環體。 因此,如果您希望循環運行K次,則應該恰好有 K次運行,其中循環條件為True
。 在迭代次數K+1中,條件變為False
,並且控制跳出循環。
另一方面,如果您使用 do-while 循環:僅在 K通過循環後才第 K 次檢查循環條件。
那麼為什麼這種邊際改善有幫助呢?
假設循環條件的計算量很大:例如,涉及對遞歸函數的調用、複雜的數學運算等。
在這種情況下,對於循環體的 K 次重複,改用 do-while 循環將是有益的。
While 與 Do-While 摘要

讓我們將我們學到的主要區別列成表格。
While 循環 | Do-While 循環 |
檢查循環條件:在循環體執行之前 | 檢查循環條件:循環體執行後 |
如果條件最初為False ,則不執行循環體。 | 如果條件最初為False ,則循環體只執行一次。 |
循環條件檢查 K 次,因為 K 通過循環。 | 循環條件檢查 K-1 次,因為 K 通過循環。 |
什麼時候使用while循環? – 只要條件為真,循環就應該運行 – 對於入口控制循環 – 當循環條件計算量不高時 | 何時使用 do-while 循環? – 對於最初的 False 循環條件,循環應至少運行一次 – 對於退出控制循環 – 當循環條件計算量大時 |
在 Python 中模擬 Do-While 循環行為
在上一節中,我們有以下兩個條件來模擬 do-while 循環:

- 循環體中的語句應該至少執行一次——不管循環條件是
True
還是False
。 - 在執行循環體中的語句後,應檢查條件。 如果條件為
False
,則控件應跳出循環:退出控件。
Python中的無限While循環和Break語句

您可以在 Python 中定義一個無限 while 循環,如下所示。
while True: pass # Instead of True, you can have any condition that is always True while always-True-condition: pass
break
語句可用於跳出循環體並將控制權轉移到循環體外部的第一條語句。
while <condition>: if <some-condition>: break
在 C 中的第一個 do-while 循環示例中,繼續循環的條件是count < 0
。 因此,跳出循環的條件是計數值為零或大於零( count >= 0
)。
這是 Python 中 do-while 循環的模擬:
count = 1 while True: print("Loop runs...") if(count >= 0): break
Python Do-While 循環示例

我們將重溫上一節中的示例,並通過模擬 do while 循環在 Python 中重寫它們。
#1 。 讓我們回顧一下這個例子:當count
小於 5 時打印出count
變量的值。
我們知道如何定義一個無限循環,以便循環體至少執行一次。
只要計數小於五,循環就應該繼續。 因此,當計數達到 5 時,我們應該跳出循環。 所以count == 5
是退出控制條件。
放在一起,我們有:
count = 1 while True: print(f"Count is {count}") count += 1 if count==5: break
Output Count is 1 Count is 2 Count is 3 Count is 4
#2 。 我們還可以將猜數字遊戲重寫為 Python do-while 結構。
在數字猜謎遊戲中,我們根據預定義的秘密數字驗證用戶的猜測。 用戶應該在允許的最大嘗試次數內猜出密碼,例如max_guesses
。
代碼應該提示用戶輸入,無論他們的猜測是對還是錯。 我們可以使用無限的while循環來做到這一點。
那麼我們什麼時候應該跳出循環呢?
當發生以下任何一種情況時,控件應跳出循環:
- 當用戶猜到數字時
- 當用戶還沒有猜到這個數字,但是已經用盡了可用的猜數。 用戶猜錯的次數 =
max_guesses
。
下面的代碼單元顯示了我們如何做到這一點。
import random low, high = 5,50 secret_number = random.choice(range(low,high)) max_guesses = 10 num_guesses = 0 while True: guess = int(input("\nGuess a number:")) num_guesses += 1 conditions = [num_guesses==max_guesses,guess==secret_number] if any(conditions): break
我們可以在遇到上述每個條件時添加解釋性print()
語句,然後跳出循環,而不是跳出循環。
import random low, high = 5,50 secret_number = random.choice(range(low,high)) print(secret_number) max_guesses = 10 num_guesses = 0 while True: guess = int(input("\nGuess a number:")) num_guesses += 1 if guess==secret_number: print("Congrats, you guessed it right!") break if num_guesses==max_guesses: print("Sorry, you have no more guesses left!") break
下面顯示了兩個示例輸出。
在此示例輸出中,當用戶正確猜出密碼時,break 語句會跳出循環。
# Sample output when secret_number = 43 and user gets it right! Guess a number:4 Guess a number:3 Guess a number:43 Congrats, you guessed it right!
當用戶達到可用猜測的最大數量但未能正確猜測秘密數字時,這是另一個示例輸出。
# Sample output when secret_number = 33 and user fails to guess it right! Guess a number:3 Guess a number:15 Guess a number:21 Guess a number:50 Guess a number:17 Guess a number:6 Guess a number:18 Guess a number:5 Guess a number:12 Guess a number:43 Sorry, you have no more guesses left!
結論
我希望本教程能幫助您了解如何在 Python 中模擬 do-while 循環。
以下是關鍵要點:
- 使用無限循環來確保循環體至少運行一次。 它可以是一個普通的無限循環,例如 while True,也可以是while <condition> ,這樣條件始終為 True。
- 檢查循環內的退出條件,並在特定條件下使用break語句跳出循環。
接下來,學習如何在 Python 中使用 for 循環和 enumerate() 函數。