Python の while 文
Python でコードを繰り返し実行する(ループする)には、while 文か for 文を使います。
ここでは Python の while 文 についてご説明します。
Python のインデントとコードブロック
while 文では、条件が True(真)を返す間、指定した「ひとまとまりのコード(コードブロック)」を実行します。
Python では、コードブロックであることを示すのにインデントを使います。
インデントに使うスペースの数は何個でもいいのですが、同じコードブロックに使うスペースの数は同じでなくてはいけません。
Python のドキュメントでは、インデントレベルごとに、4つのスペースを使うことが推奨されています。
間に空白の行が入っても、インデントが同じで続いているのであれば、同じコードブロックとみなされます。
他のプログラム言語では、コードを読みやすくするためにインデントを行うものが多いですが、Python ではインデントは重要な意味を持ちますので気をつけてくださいね。
Python の while 文
while 文を使うと、指定した条件文が True(真)を返す間、コードブロックを繰り返し実行することができます。構文はこんな感じです。
while [条件文]:
[コードブロック]
例えば、while 文をつかって index を 1 から 5 を print するには次のようにできます。
index = 0
while index < 5:
index += 1
print("index =", index)
実行結果です。条件文の index < 5 が True の間、 index += 1 と print("index = ", index) が繰り返し実行されています。
index = 1
index = 2
index = 3
index = 4
index = 5
print()関数には、カンマ区切りで複数のオブジェクトを渡すことができ、sep= で区切り文字を指定しなければデフォルトで空白ひとつが使われ、続けて表示されます。
ここで、index を増やす index += 1 を忘れてしまうと、無限にループされ、print("index = ", index) が実行されて続けてしまいます。
while 文を使う時は、ループちゃんと抜けるようになっているか気をつけてくださいね。
また、条件文が最初から False を返す場合は、コードブロックは一度も実行されません。
Python の while 文 で continue する
while 文のコードブロックの中で continue 文を使うと、コードブロック内のそれ以降のコードをスキップして、条件式の評価に戻ります。
while 文のサンプルコードで、index が 2 の時に continue するようにしてみましょう。
index = 0
while index < 5:
index += 1
if index == 2:
continue
print("index =", index)
実行結果は次のようになり、index が 2 の時は、残りのコードである print("index =", index) が実行されずに、条件分の評価に戻っているのがわかります。
index = 1
index = 3
index = 4
index = 5
Python の while 文 で break する
while 文のコードブロックの中で break 文を使うと、そこで while 文を抜けることができます。
while 文のサンプルコードで、index が 4 の時に break を使って、while 文を抜けるようにしてみましょう。
index = 0
while index < 5:
index += 1
if index == 4:
break
print("index =", index)
実行結果は次のようになり、index が 4 になった時に while ループを抜けているのがわかります。
index = 1
index = 2
index = 3
Python の while - else 文
while 文の後に else 文を書くと、条件分が False になった時に else 文のコードブロックを一度だけ実行することができます。
最初の while 文のコードに else 文を追加して、while 文を抜けた時の index を出力してみましょう。
index = 0
while index < 5:
index += 1
print("index =", index)
else:
print("current index is", index)
実行結果は次のようになります。 else 文のコードブロックが実行され、index が 5 になって while ループを抜けていることがわかりますね。
index = 1
index = 2
index = 3
index = 4
index = 5
current index is 5
while の条件文が最初から False を返す場合にも、else 文のコードブロックは実行されます。
これって、while 文が終わった後に、print("current index is", index) を書くのと何が違うの?と思われるかもしれませんが、break を使ってループを抜けた時には else 文は実行されません。
以上、Python の while 文 についてご説明しました。