原文: Python Do While – Loop Example

ループは、すべてのモダンなプログラミング言語で頻繁に使用されている便利な機能です。

特定の反復的なタスクを自動化したい場合や、プログラム内で反復的なコードを書くのを避けたい場合は、ループを使用するのが最適です。

ループは、条件が満たされるまで繰り返し実行される一連の指示です。Python でループがどのように機能するかについて詳しく学びましょう。

Python におけるループ

Python には 2 種類のループが組み込まれています。

  • for ループ
  • while ループ

Python で while ループを作成する方法とその仕組みに焦点を当てましょう。

Python における while ループとは何か

Python の while ループの一般的な構文は次のようになります。

while condition:
    execute this code in the loop's body

while ループは、条件が True の間コードを実行します。その条件が True でなくなるまで、必要なコード文のセットを実行し続けます。

while ループは、実行する前に必ずまず条件をチェックします。

条件が True となった場合、ループはループ内のコードを実行します。

たとえば、次のループは、number10 未満である限り実行されます。

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!

ここでは、最初に変数 number0 に設定されています。

コードが実行される前に、Python は条件 (number < 10) をチェックします。True と判断されるため、print 文が実行され、Number is 0! とコンソールに出力されます。

その後、number の値は 1 増加します。条件が再確認され、再び True であるため、number9 に等しくなるまで全体の手順が繰り返されます。

Number is 9! と出力された後、number の値は増加しますが、number10 に等しくなるため、その時点で条件が満たされなくなり、ループは終了します。

下の例のように、条件を満たさない場合、while ループが全く実行されない可能性もあります。

number = 50
while number < 10 :
    print(f"Number is {number}!")

条件は常に False であるため、ループ内のコードは実行されません。

無限ループを作らない

上の例でもわかるように、while ループには通常、ループ内に値が変化する変数が伴います。そして最終的にループがいつ終了するかが決まっています。

この 1 行を追加しないと、無限ループが作成されてしまいます。

number の値は増加も更新もされません。常に最初に設定された 0 のままであるため、number < 10 という条件は永久に True となってしまいます。これは、ループが永遠に続いてしまうことを意味します。


# 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!
...

このコードは無限に実行されてしまいます。

これは、下のコードと同じことです。


#don't run this
while True:
    print("I am always true")

このような状況に陥ったらどうしますか?

Ctrl + C を押すと、ループを終了することができます。

do while ループとは何か

他のプログラミング言語における do while ループの一般的な構文は次のようになります。

do {
  loop block statement to be executed;
  }
while(condition);

たとえば、C の do while ループは次のようになります。

#include <stdio.h>
 
int main(void)
 {
   int i = 10;
   do {
      printf("the value of i: %i\n", i);
      i++;
      }
  while( i < 20 );
 }

do while ループのユニークな点は、ループブロック内のコードが少なくとも 1 回は実行されるということです。

ブロック内のコードは 1 回実行され、コードの実行後にのみ条件が確認されます。

したがって、最初にコードが 1 度実行されてから、条件がチェックされます。

チェックされた条件が true と判断されると、ループが続行されます。

コードを少なくとも一度は実行したい場合に、do while ループは便利です。

たとえば、ユーザーからの入力を受け取るプログラムを作成している場合に、正数のみを求めることがあります。コードは少なくとも 1 回は実行されます。ユーザーが送信した数値が負数の場合、ループは実行し続けます。プラスの場合は停止します。

Python には他の言語のように do while ループを明確に作成するための組み込み機能はありません。しかし、Python でも do while ループと同じ機能を果たすことは可能です。

Python で do while ループを作成する方法

Python で do while ループを作成するには、他の言語の do while ループと同様な機能を果たすように、while ループに少し手を加える必要があります。

これまでのおさらいですが、do while ループは少なくとも 1 回実行されます。条件が満たされると、再度実行されます。

一方で、while ループは必ず一度は実行されるというわけではなく、実際には一度も実行されないこともあります。条件が満たされたときのみに実行されます。

では、コード行を少なくとも 1 回は実行したいとしましょう。

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 があることによって、少なくとも 1 回は実行されることが保証されます。この True は使い方を誤ると無限ループになってしまうため注意してください。

ユーザーが正しいシークレットワードを入力することで、ループは終了します。

ユーザーが間違ったシークレットワードを 7 回以上入力すると、ループは終了します。

break 文を使用すると、while ループのフローを制御し、無限ループに陥ってしまうのを防ぐことができます。

break 文は現ループを直ちに終了させます。

これが、Python で do while ループと同様の機能を作る方法です。

このループのコードは必ず少なくとも 1 回は実行されます。条件が満たされない場合はループを継続し、条件が満たされた時点で終了します。

まとめ

これで、Python で do while ループを作成する方法がわかりました。

Python についてさらに詳しく知りたい場合は、freeCodeCamp の YouTube チャンネルの動画、Python 12 のプロジェクトをご覧ください。初心者向けの動画で、12 個のプロジェクトを作成しながら学べます。

また、freeCodeCamp には、Python の基礎を十分に理解し、包括的な理解を深められる、無料の Python 認定講座もあります。

認定講座の最後には、学んだことを実践するために 5 つのプロジェクトを作成します。

読んでいただき、ありがとうございました。Happy learning!