關於 'while' 迴圈

已完成

當我們在撰寫程式碼時,常會遇到一項挑戰,就是讓程式碼執行不定次數的工作。 在本單元中,您希望允許使用者輸入一組行星名稱的清單。 不幸的是,您不知道使用者輸入多少名稱。 為了支援執行不定次數的迴圈,您可以使用 while 迴圈。

「當」特定條件為 true 時,while 迴圈會執行作業。 您可以使用 while 迴圈來:

  • 檢查檔案中的另一行。
  • 檢查是否已設定旗標。
  • 檢查使用者是否已完成輸入值。
  • 檢查是否有其他專案已變更,以指出程式碼可以停止執行作業。

重要

當我們建立 while 迴圈時,要記住的最重要一點是確保條件會變更。 如果條件總是為 true,則 Python 會持續執行程式碼,直到程式損毀為止。

while 迴圈的語法相似於 if 陳述式。 我們必須提供條件,以及當條件為 true 時所要執行的程式碼。

while 迴圈有三大組件:

  • 關鍵字 while,後面接著空格。

  • 您測試的條件。 若條件為 true,則 while 迴圈內的程式碼會執行。

  • 您想要針對每個反覆項目執行的程式碼,以巢狀空白字元縮排。 例如:

    while <condition>:
        # code here
    

讓我們看看如何建立程式碼來提醒使用者輸入值,接著允許使用者在完成輸入值後輸入「完成」。 在本範例中,使用者輸入是於 while 迴圈頂端測試的條件。

user_input = ''

while user_input.lower() != 'done':
    user_input = input('Enter a new value, or done when done')

請注意,我們會使用 input 來提示使用者。 每次使用者輸入新值時,就會變更條件,這表示 while 迴圈會在他們輸入「完成」後結束。

注意

在本範例中,我們使用了 lower 將輸入轉換為小寫,以允許進行區分大小寫得比較。

您可以使用新輸入的字串,就像使用 input 擷取的任何其他字串一樣。 如果您想將其新增至清單,可以使用如下範例的程式碼:

# Create the variable for user input
user_input = ''
# Create the list to store the values
inputs = []

# The while loop
while user_input.lower() != 'done':
    # Check if there's a value in user_input
    if user_input:
        # Store the value in the list
        inputs.append(user_input)
    # Prompt for a new value
    user_input = input('Enter a new value, or done when done')

請注意 while 迴圈中的 if 陳述式。 這個陳述式會測試 user_input 中的字串值。 while 迴圈初次執行時不會有任何值,所以沒有任何項目可以儲存到 inputs 中。 初次執行結束後,user_input 一律會保留使用者輸入的值。 因為 while 會進行測試以確保值不會等於 done (使用者會輸入以結束應用程式的字組),所以我們能知道目前的值就是能新增到清單中的值。

注意

您可能熟悉支援 do 迴圈的其他程式設計語言,能讓您在迴圈底部執行測試。 Python 不提供 do 迴圈。