'while' ループについて

完了

コードを記述する場合、一般的な課題の 1 つは、タスクを不明な回数実行する方法です。 このユニットでは、ユーザーが惑星名のリストを入力できるようにする必要があります。 残念ながら、ユーザーが入力する名前の数はわかりません。 不明な回数のループをサポートするには、while ループを使用できます。

while ループは、特定の条件が true の "間"、操作を実行します。 while ループは、次の処理に使用できます。

  • ファイルに別の行があるかどうかを確認します。
  • フラグが設定されているかどうかを確認します。
  • ユーザーが値の入力を完了したかどうかを確認します。
  • コードが操作の実行を停止する変更を、ほかに行ったかどうかを確認します。

重要

while ループを作成するときに覚えておく必要がある最も重要なことは、条件が変わる点です。 条件が常に true の場合、Python はプログラムがクラッシュするまでコードを実行し続けます。

while ループの構文は、if ステートメントの構文と似ています。 条件が true の間に実行する条件とコードの両方を指定します。

while ループには、次の 3 つの重要な部分があります。

  • スペースが続く、while キーワード。

  • テストする条件。 条件が true の場合、while ループ内のコードが実行されます。

  • 各反復で実行するコード。空白文字でインデントして入れ子にします。 次に例を示します。

    while <condition>:
        # code here
    

ユーザーに値の入力を求め、値の入力が完了したら done を使用できるようにするコードを作成する方法を見てみましょう。 この例では、while ループの先頭で、ユーザー入力が条件として使用されテストされます。

user_input = ''

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

input を使用してユーザーにプロンプトを表示していることに注意してください。 ユーザーが新しい値を入力するたび、条件が変わります。つまり、done を入力すると 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 ループは提供していません。