この記事では、Pythonのwhile文の使い方について解説します。
while
文は、指定された条件が真(True
)である限りブロック内のコードを反復的に実行する制御構文です。イテラブルを用いてループ処理するfor文とは異なった使い方ができます。
また、その性質から無限ループとして使われることが多々あります。
それでは、while
文の使い方を見ていきましょう!
基本的なwhile
ループの構造は次のようになります。
while 条件式:
# 反復する処理
指定した条件式が真(True
)である限りブロック内の処理が反復して実行されます。条件式が偽(False
)と評価されるとループは終了し、while
ブロックの後のコードが実行されます。
以下のコードは、i
が3
未満の間、ループ処理されます。
i = 0
# i が 3 未満だった場合 True
while i < 3:
# i を出力
print(i)
# i をインクリメント
i += 1
実行結果
0
1
2
上記コードでは、i
という変数を 0 で初期化し、その値が3未満である限りループは続けられます。ループの中で現在のi
の値を出力し、i
をインクリメント(i
の値を 1 増やす)します。i
の値が3以上になるとi < 3
の条件は偽になり、ループは終了する。
先に条件式が評価されるため、初めから偽(False
)と評価される条件だと1度もブロック内の処理が実行されないこともあります。
i = 10
# i は 3 よりも大きいので False
while i < 3:
print(i)
i += 1
i(10) < 3
は偽(False
)なので1度もwhile
文ブロックが実行されませんでした。
while
文は、具体的な繰り返し回数が決まっておらず、特定の条件が満たされるまで操作を続ける必要があるときに使われます。
例えば、以下のコードはユーザーからの適切な入力を得るまで無限ループします。無限ループとbreak
については後述します。
while True:
user_input = input("操作を続けますか? [はい, いいえ]: ")
if user_input in {'はい', 'いいえ'}:
break
実行結果
操作を続けますか? [はい, いいえ]: あ
操作を続けますか? [はい, いいえ]: いいえ
ただし、可能な場合はfor
文を使う方が推奨されています。なので、まずはfor
文で実装できるか考えてみて難しそうならwhile
文を使いましょう!
while
文のブロック内にcontinue
ステートメントを記述することで、continue
ステートメントが実行された際の反復をスキップし、次の反復をすぐに開始することができます。
以下では、i
が3
の時にcontinue
ステートメントが実行され、処理をスキップしています。
i = 0
while i < 5:
i += 1
if i == 3:
print('continue')
continue
print(i)
実行結果
1
2
continue
4
5
上記コードでは、i
が 3 になった際にcontinue
が実行されます。そうすることでcontinue
より下に記述されているprint()
は処理されずにスキップされ、次の反復が開始されます。
if
文と組み合わせることで特定の条件の時のみ処理をスキップさせることができます。
while
文のブロック内にbreak
ステートメントを記述することで、break
ステートメントが実行された際にループを即座に終了させることができます。
以下では、i
が3
になったらbreak
ステートメントが実行され、ループが即座に終了します。
i = 0
while i < 5:
i += 1
if i == 3:
print('break')
break
print(i)
実行結果
1
2
break
if
文と組み合わせることで特定の条件でループを終了させることができます。break
は無限ループを終了させるためによく使用されます。
ちなみに、ループがネストされている(ループの中にループがある)場合、break
は最も内側のループのみを終了させます。
while
文の条件式に常に真(True
)な値を指定すると無限ループさせることができます。
注意
無限ループは実行するとその名の通り無限にループしてしまうので、ターミナルやコマンドプロンプトから実行した場合は、Ctrl + Cで実行を中止しましょう!
以下のコードは、i
を1
ずつ増やして、それを無限に出力し続けるだけのプログラムです。実行すると物凄いスピードで値が出力されていきます。
i = 0
while True:
print(i)
i += 1
途中で処理を終わらせたい場合には、break
を使います。
i = 0
while True:
if i == 3:
break
print(i)
i += 1
i
が3
になった時にbreak
が処理され、while
文を終了させます。
else
節を定義することでwhile
文の条件式が偽だった場合、else
節の処理を実行してからループを終了するようにできます。
i = 0
while i < 3:
print(i)
i += 1
else:
print("終了")
実行結果
0
1
2
終了
つまりは、ループが終わった直後にやっておきたい処理を定義できます。
ちなみに、break文を使ってループ処理を終了した場合、else節の処理は実行されないので注意してください。
ほかの言語でよく使われているdo...while
文はPythonには存在しません。do...while
文は、条件に関わらず必ず1度は実行されるwhile
文となっています。
Pythonでは、無限ループとbreak
を組み合わせることで同じようなコードを実装できます。
while True:
# なにかしらの処理
if 条件式:
break
例えば、以下のような感じで使います。
num = 1
while True:
print(num)
num += 1
if num < 10:
break
実行結果
1
この記事では、Pythonのwhile
文の使い方を解説しました!
ループ処理を実装しようと思った際には、まずはfor
文での実装方法を考えてみて、無理そうならwhile
文で実装を検討しましょう!
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ
View Comments