【初心者向け】Pythonでwhile文を使う方法
Pythonを使ってループ処理をする際に使える文法のひとつであるwhile文。 Pythonのプログラミングでループを覚えることは必須なので、これを機にwhile文の使い方を覚えてしまいましょう。 この記事ではwhile文の使いどころから実際の書き方までを、プログラミング初心者にもわかりやすいよう、コードの実例を載せて解説していきます。
Pythonのwhile文とは
while文は繰り返しの処理を記述する際に使います。
for文とwhile文の違い
Pythonの繰り返し処理にはfor文というものもあります。 ではwhile文とfor文は何が違うのでしょうか? 両者の違いは、ループの終了条件です。
以下のように、while文は条件を満たすかどうかをループの基準にしており、条件がtrueの間は処理を繰り返し続けます。
- for文:指定された回数繰り返すと終了する
- while文:条件を満たさなくなったら終了する
Pythonのwhile文の基本書式
それではPythonでのwhile文の書き方を解説していきます。
while文の基本書式は以下の通りです。
while 条件:
繰り返しおこなう処理
例えば、5回処理を繰り返したい場合は以下のように記述します。
i = 0
while i < 5:
print(i)
i += 1
このコードの実行結果は以下のとおりです。
変数iが5より小さいことを条件に、ループの中で変数iに1を加算(インクリメント)しています。
0
1
2
3
4
while文は無限ループに注意しよう
while文の無限ループとは、処理の繰り返しの中で条件を満たし続けることによって起こります。 上記のコードを例に、以下のように書くと無限ループとなります。
i = 0
while i < 5:
print(i)
このコードは、ループの最後に変数iをインクリメントする処理が抜けています。すると、何度ループしても変数iの値が0のままであるため、永遠にループが終わらず無限ループとなります。 このように、while文を書くときにはどこかでループを抜ける記述をするよう気を付けてください。
Pythonのwhile文のさまざまな書き方
ここからはwhile文を使って、
- ループを中断する方法
- 次のループに処理をスキップする方法
- else文でループ終了時の処理を記述する方法
を紹介していきます。
break文でwhile文のループを中断する
while文を使っていると、ループの途中でループから抜け出したいという場面がでてきます。 そんなときに使うのがbreak文です。 break文は、「配列の要素を調べて特定の条件に合うものがあればループを終了する」といった処理を実装する際などに役に立ちます。
break文は以下のように書きます。
while 条件:
if 条件:
break
例として、様々な数値を調べ50より大きいものを見つけたらループを抜ける処理を書いてみます。
numbers = [2, 34, 52, 23, 49]
i = 0
while i < len(numbers):
if numbers[i] > 50:
print("50より大きい数字がありました。")
break
i += 1
continue文で処理をスキップする方法
while文でのループ中に、特定の条件で処理をスキップしたい場合があるときにはcontinue文が有用です。 continue文を使うことで、ループの途中で処理をスキップし、すぐに次のループが始まります。
continue文は以下のように記述します。
while 条件:
if 条件:
continue
繰り返しおこなう処理
例として様々な数値を調べ、50以下のものを表示するという処理を書いてみます。
numbers = [2, 34, 52, 23, 49]
i = 0
while i < len(numbers):
if numbers[i] > 50:
i += 1
continue
print(list[i])
i += 1
このコードの実行結果は以下の通りです。
2
34
23
49
このように、50より大きい数字(52)のループでは、continue文が実行されその後の出力処理などがスキップされて次のループが始まります。
else文でwhile文終了時の処理を記述する
while文が終了した際に実行したい処理がある場合、else文を使って書くことができます。 while文のループ終了後、else文を1度実行し、while文が終了します。
while文におけるelse文は以下のように記述します。
while 条件:
繰り返しおこなう処理
else:
条件が偽のときに実行される処理
else文を書かずとも、while文の後に処理を書けばelse文と同じ動作をしますが、あえてelse文で書くことでその処理がwhile文と関係していることがわかりやすくなります。 つまり、第三者にもわかりやすいコードを書くためelse文を使うのです。 また、break文が実行されてwhile文が終了した場合にはelse文は実行されないので、while文がどのように終了したのかを判断するためにelse文が使われることもあります。
try-except文を使ったエラー処理について
Pythonのwhile文を使う際、エラー処理を適切に行うことは重要です。
ループ内で発生するエラーに対する処理はいくつか方法がありますが、ここではtry-except文使った事例を紹介します。
x = 0
while x < 5:
try:
print(10 / x) # xが0の場合、ZeroDivisionErrorが発生
except ZeroDivisionError:
print("ゼロで割ることはできません")
x += 1 # エラーを避けるためにxを増やす
else:
print("計算成功")
x += 1
上記のように書くと、10 / xの計算中に、ZeroDivisionErrorが発生した場合に、ループが中断するのを防ぎ、プログラムを適切に続行されるようになります。
try-except文については、下記記事でも詳しくまとめておりますので、合わせてご活用ください。
Pythonの例外処理(try-except)について解説します!
まとめ
ここまでwhile文の概要から使い方までを紹介してきました。 while文のポイントとして、「条件を満たす限りループが続く」「無限ループに注意」「break文を使ってループから抜けられる」ということを覚えておきましょう。 この記事がPythonでプログラミングをする際に必要となるwhile文についての基礎を覚えるきっかけになれれば幸いです。