Python学習の初期段階で出てくるWhile文。
while文は繰り返し処理に用いられるので重要なものの、いまいち理解が難しい文法でもあります。
この記事では、Pythonにおけるwhile文の書き方、while文の使用例、無限ループから抜け出すbreak文やcontinue文の意味・使い方を紹介します。
while文をマスターして、Python初心者から早く抜け出しましょう!
Pythonで使用されるWhile文とは|for文との違い
PythonにおけるWhile文は、条件式がTrueの間だけwhile節内のコードが(繰り返し)実行されます。
同じ繰り返し処理でも、for文は一定の回数だけコードを実行するという回数指定でした。
for文について学びたい人は、以下の記事も参考にしてください。
【Python初心者】forループの繰り返し処理はとりあえずこれだけ!|リストやrange関数を用いた実例もご紹介
PythonのWhile文の書き方
while文は、以下のように記述します。
繰り返したいコード
①先頭にwhileを書く
②条件式を書く
③「:」を書く
④改行+インデントをして、繰り返したい処理を書く
条件式がTrueの間、④で書かれたプログラムが繰り返されます。
Pythonでは、コードのブロック下げにより、繰り返したい処理を指定することができるので、処理の最後にendを書く必要はありません。
また、「:」はwhile文を書き慣れるまで記述忘れが多いので、注意しましょう。
演算子について自信がない方は、こちらの記事をチェックしてみてください。
PythonのWhileループの使用例
ここでは、1〜100までの整数をたすプログラムを紹介します。
i = 1 # iに1を代入 sum = 0 # sumに0を代入 while i <= 100: # iが100になるまで繰り返す sum = sum + i # sumにiの数を足す i = i +1 # iに1を足す print(sum) #sumを出力 # 5050
i = i +1を行うことによって、sumの行で足される数が1ずつ大きくなっています。
このwhile文では、iが100になるまでというのが条件式であり、iが1, 2, 3 , …, 100の間は条件式がTrueなので、その間はwhile節内のコードが実行されます。
Pythonのwhileにおける無限ループから抜け出す方法(break文・continue文)
while文の条件式がずっとTrueであれば、while節内のコードは無限に繰り返されてしまいます。
例えば、
の時です。
このような無限ループをを抜け出す方法はbreak文・continue文の2つがあります。
break文 | ループ節を抜け出す |
continue文 | ループの先頭に戻り、ループ条件式を再評価する |
break文の使い方
while文は、break文に到達すると即座にwhile節から抜け出します。
break文はbreakと記述するだけです。
i = 1 # iに1を代入 sum = 0 # sumに0を代入 while i <= 100: # iが100になるまで繰り返す sum = sum + i # sumにiの数を足す i = i +1 # iに1を足す break # while節から抜け出す print(sum) #sumを出力 # 1
1回目のループで、breakに到達してしまうので、sumに1しか足されず、sumを出力しても1になってしまうのです。
if文と用いると、break文をより効果的に使うことができます。
while True: # 無限ループを作成 print('パスワードを入力してください') # 'パスワードを入力してください'と出力 pw = input() # pwの入力待ち if pw == 'yotaro1234': # もしpwがyotaro1234だったら break # 無限ループから抜け出す print('パスワード認証完了です') # 'パスワード認証完了です'と出力
このプログラムは、正しいパスワードを入力するまで無限にパスワードをきかれるプログラムです。
if文について学びたい方は以下の記事もお読みください。
【Python初心者】if文を使った条件分岐をマスターしよう!else文やelif文の具体例も解説
continue文の使い方
while文は、break文に到達すると即座にループの先頭に戻り、条件式がTrueかどうかを再評価します。
continue文もcontinueと記述するだけです。
i = 1 # iに1を代入 sum = 0 # sumに0を代入 while i <= 100: # iが100になるまで繰り返す sum = sum + i # sumにiの数を足す i = i +1 # iに1を足す continue # i <= 100に戻る print(sum) #sumを出力 # 5050
文末にcontinueを記載した場合は、「条件式に戻る」という本来の文末の役割と同じなので、continue無しの時と同じように動きます。
Pythonのwhile文でelseを使う方法
if文のように、elseを使うことで、while文の条件式がFalseだった場合の処理を記述できます。
i = 1 # iに1を代入 sum = 0 # sumに0を代入 while i <= 100: # iが100になるまで繰り返す sum = sum + i # sumにiの数を足す i = i +1 # iに1を足す else: print(sum) #sumを出力 # 5050
このプログラムの場合は、else文を用いてもwhile節の後にprint(sum)を用いても、結果は変わりません。
違いは、break文を用いている場合に現れます。
break文は、else部分も実行されずにwhile節外の処理へと移ります。
i = 1 # iに1を代入 sum = 0 # sumに0を代入 while i <= 100: # iが100になるまで繰り返す sum = sum + i # sumにiの数を足す i = i +1 # iに1を足す break # while節から抜け出す else: print(sum) #実行されない print('ここが実行される') # ここが実行される
最後に: while文の繰り返し処理をマスターしよう
while文は、if文やfor文と共に頻繁に使用される文法です。
この記事を読んでしっかりと復習して、使えるようにしましょう!