如何在 Python 中模擬 Do-While 循環

已發表: 2022-08-31

在本教程中,您將學習如何在Python中模擬do-while 循環

在任何編程語言中,循環都可以幫助您根據循環條件重複執行某些操作。 Python 支持whilefor循環結構,但本身不支持do-while循環。

但是,您可以通過了解它的工作原理來模擬 do-while 循環——使用 Python 中現有的循環和循環控制語句。

您將在接下來的幾分鐘內了解如何執行此操作。 讓我們開始!

什麼是 Do-While 循環結構?

什麼是 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 < 0False ,最初count變量被初始化為 1。因此在編譯和運行上述代碼時,我們看到 while 循環體中的語句沒有執行。

 Output While loop: //loop body does not run!

While vs. Do-While:差異概述

讓我們仔細看看 while 和 do-while 循環之間的區別。

While vs 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 循環如何工作並檢查循環條件四次。

執行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 循環檢查循環條件五次。

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循環來做到這一點。

那麼我們什麼時候應該跳出循環呢?

當發生以下任何一種情況時,控件應跳出循環:

  1. 當用戶猜到數字時
  2. 當用戶還沒有猜到這個數字,但是已經用盡了可用的猜數。 用戶猜錯的次數 = 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() 函數。