【Pythonの基本】whileとforを使った繰り返し文を徹底解説!

  • データベースから取得したデータ一式を順番に表示する
  • データ数が100を超えるまで、同じ処理を繰り返す

など、プログラミングは同じ処理の繰り返しです。

同じ処理を繰り返す際に、すべての処理をプログラムで書いていては、ソースコードが膨大に長くなり、修正も大変です。

そんな苦労をなくすため、プログラミング言語には繰り返し文という、同じ処理を何度も繰り返す構文が用意されています。

今回は、Pythonを使って、繰り返し文の代表「while」「for」を解説していきます。

while文

まずはwhile文から解説いたします。

while文は非常にシンプルで、

  1. whileの後ろに条件式を書く
  2. 条件がTrueを返している限り、永遠に繰り返す
  3. 繰り返し処理後、else処理をする(elseは省略可能。基本的にelseを使わないことが多いです)

という流れでプログラムが処理されます。

この例でいうと、条件式(iが5より小さい)がTrueを返す限り、処理(iをprintして、iに1を足す)を繰り返します。

無限ループに注意!

こうした場合、どうなるでしょう?

これをターミナルから実行すると、

「11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111….」

と無限に1が表示されます。

これは、iに1を足す処理をなくしてしまったため、条件式である「iは5より小さい」という条件を抜けることができなくなってしまったために起こった現象です。

while文は条件式に当てはまる限り、処理をやめません。無限ループに陥って、プログラムが壊れないように注意しましょう。

処理を中断するbreak

while文や、後ほど紹介するfor文は、「break」という記述を書くことで、繰り返しループから無理やり脱出することができます。

こちらの例では、iが3になったときに「break」が実行されるようになっています。
そのため、iが1,2のときの2回分「print(i)」を実行し、3回目のループの時(iが3のとき)、if i == 3:がTrueを返し、ifの処理である「break」が実行され、whileループを抜けることができました。

elseブロックの使い方

基本的なプログラムを書く場合、while文やfor文で「else」を使う必要はありません。しかし、効率的に読みやすいプログラムを書くためには、「else」の使い方を覚えておく必要があります。

elseが実行される条件は

  1. 繰り返しが1度も実行されなかった時
  2. breakで繰り返しを抜けなかった時

の2パターンです。
この条件をみても、「ん?いつ使うんだろう?」と思いますよね。

あまり頻出するような例ではないのですが、例えば、

  • 5つの数字の中に4が含まれているか調べたい。
  • 4が含まれていた場合、「ありました!」をprint
  • 含まれていない場合、「なかったです・・・」をprint

する処理を書くとしましょう。

このような書き方をすれば、実現可能です。もちろん、4がなかったときにTrueとFalseを入れ替える変数を用意しておけば、同じ処理をelseを使わずに書けます。

「elseを使えば、こういう書き方も出来るんだ」というぐらいの感覚で覚えておいてください。

for文

for文もwhile文と大きく変わりません。ただ、for文の場合は、while文で言う条件式の部分で、細かく処理の流れを規定することができます。

range()関数

for文を使う際によく一緒に使われるrange()関数。この関数は数字の範囲を指定することで、for文が何回処理を繰り返せば良いのかを設定することができます。

例えば、while文とfor文で、print(i)をiが1〜10まで繰り返したいとします。

このように、for文の場合は、iをfor構文の中で宣言して、range()関数で範囲を規定することによって、繰り返し処理を実行します。

else,break等もwhileと同様

elseやbreak等の処理も、whileと同様の使い方できます。

状況に応じて、これらの記述を使うことで、プログラムを簡潔に保つことができます。

繰り返し分は初歩中の初歩

ココで紹介した「while文」「for文」は、プログラミングの初歩中の初歩です。

この初歩の技術を完璧に使いこなせるかどうかがプログラマーとしての腕の見せどころ。ぱっと見ただけでわかりやすい簡潔なプログラムを書くために、繰り返し処理をマスターしましょう!

ABOUTこの記事をかいた人

新卒ノマドエンジニアとして独立し、半年で月収100万円を達成する。フリーランスのエンジニアとして活動しながら、事務所を売却(バイアウト)したり、Youtuber(最高月間視聴回数109万回、チャンネル登録者1万人)をしたり、Openrecの公式配信者としてゲーム生実況をしたり、ベンチャー企業のCOOをしたり、パラレルキャリアを歩んでいる。 2019年にミニマムライフコストを不労所得で稼げるようになったため、いまは好きなことだけ仕事にしています。