新米エンジニアのプログラム記録

pythonプログラムの基礎を載せています。

【超入門】第4回:while関数を使って繰り返し処理を使いこなそう

このページで学べること

  1. ループ処理の基礎知識について
  2. while関数の使い方
  3. while関数を使う上での注意点について

目次

while関数とは

 while関数は、pythonを初める多くの人が最初に学ぶ関数の内の1つです。「もし〇〇の状態なら、○○の処理を繰り返してください」というプログラムを書くことができるようになります。今までのプログラムの処理は一度しかできなかったのに対して、この関数を使うことで条件を満たすまで処理を繰り返すことができるようになります。
while文を理解できると、より複雑なプログラムを書けることができ自信が少しついてくると思いますので頑張りましょう。

while関数の使い方

 ここからは実際にwhile関数を使ってみましょう。下記のプログラムをコピーしてプログラムを実行してみてください。
<サンプルプログラム>

#①input関数を使って、キーボードから入力された内容を変数xに代入する。
x = input("アルファベットを入力してください:")
#②while関数を使って、変数xの中身がaかどうか判定する。<aならループを抜ける。a以外ならループ処理を実行>
while x!="a":
    #while関数のループ処理
    #③input関数を使って、キーボードから入力された内容を再度変数xに代入する。
    x = input("再度アルファベットを入力してください:")
    #④whileの行に戻る
#⑤xの中身がaならwhile関数のループを抜けて、print関数を実行する。
print("正しくアルファベットが入力されました")

 動作としては、①input関数を使って「x」の変数内にキーボードで入力した内容が保存されます。②while関数の条件式にて、その入力内容が、「a」であるかを判定して、「a」でなければwhile関数に属するプログラムを実行する③while関数のループ処理内で、input関数を用いて、もう一度変数「x」にキーボードからの入力を行います。④もう一度②に戻って再度while関数の条件式の判定を行う。while関数の条件式がFalseになるまで繰り返す。⑤while関数の条件式がFalseならループ処理を抜けて、"正しくアルファベットが入力されました"とprint関数が実行されて画面上に表示される。
となります。
簡易的なフローチャートで表現すると下記のようになります。

☆print関数について復習したい方は過去のページを参照ください。
kpython.hatenablog.com
☆input関数について復習したい方は過去のページを参照ください。
kpython.hatenablog.com
☆条件式については、if関数のページでも紹介してますので参照ください。
kpython.hatenablog.com


次からは②のwhile関数のループ処理にを詳しく見てみたいと思います。

while関数の書き方

 ②のwhile x!="a":の行に着目してみてください。while関数の書き方は下記のようになります。
  while 条件式:
   while関数に属するプログラム(ループ処理)
サンプルプログラムでは「x!="a"」の部分が条件式となります。条件式は、if関数で説明したものと同じですので、詳しく見たい方は下記のリンク先を参照してください。
kpython.hatenablog.com
 条件式の処理はif関数のときと同じで、条件式がTrueのときのみwhile関数に属するプログラムを処理し、Falseのときは属するプログラムが処理されません。異なる点は、if関数は一度処理したら終了でしたが、while関数は属するプログラムの最後まで行くと、もう一度条件式を参照するところまで戻ります。この動きが条件式がFalseになるまでループすることが特徴です。

while関数の注意点

while関数の無限ループについて

 while関数は条件式がTrueの状態のときにループを繰り返すと説明しましたが、条件式がFalseにならないプログラムを書いてしまうとwhile関数のループを抜け出せない無限ループに陥ってしまいます。サンプルプログラムで例えると次のようなときです。
<サンプルプログラム>

x = input("アルファベットを入力してください:")
while x!="a":
    #ここが異なります。
    y = input("再度アルファベットを入力してください:")
print("正しくアルファベットが入力されました")

ループ内の処理をy=input()に書き換えました。こうしてしまうと、ループ内で条件式のxの中身を変更することができないため、条件式を満たすことができなくなり無限ループに陥ってしまいます。
こうならないように、while関数の条件式はしっかりと確認して書くようにしましょう。

breakについて

 while関数のループを抜け出す方法として、条件式がFalseになるときと説明しました。しかし、もう一つの方法として「break」というものがあります。次のサンプルコードを見てください。
<サンプルプログラム>

x = input("アルファベットを入力してください:")

while True:
    #while関数のループ処理
    #if関数でxの中身がaかどうかを判定
    if x == "a":
        #aならbreakを実行してwhile関数のループを抜け出す。
        break
    x = input("再度アルファベットを入力してください:")
    
print("正しくアルファベットが入力されました")

最初のサンプルプログラムと異なるのは、while関数の条件式が「True」になっていること。そして、if関数の中に、「break」という文字が入っていることです。まず、条件式に直接Trueと書かれたときの処理ですが、これは「条件を問わず常にTrueとする」という意味となり、while関数が無限ループとなります。一つ目の注意点で無限ループには気を付けてくださいと書いたのにいいの?となるかもしれませんが、このループを抜け出す方法としてbreakが存在します。このbreakは、ループ処理から抜け出すという処理をしてくれるので大丈夫なのです。サンプルプログラムでは、if関数でxの中身がaならばbreak関数が実行されてwhile関数のループを抜け出せるようになっています。ほかにもbreakを使えば、特定条件でループを抜け出すようなプログラムが書くことができるので便利です。

最後に

 いかがだったでしょうか?今回はwhile関数の使い方と注意点についてまとめさせていただきました。この関数を使えることで、いままでプログラムの処理は一度しかできなかったのに対して、繰り返して処理を行うことができるようになりました。様々な場面で使用でき、理解が深まると奥が深いので、ぜひいろいろ試してみてください。