- データベースから取得したデータ一式を順番に表示する
- データ数が100を超えるまで、同じ処理を繰り返す
など、プログラミングは同じ処理の繰り返しです。
同じ処理を繰り返す際に、すべての処理をプログラムで書いていては、ソースコードが膨大に長くなり、修正も大変です。
そんな苦労をなくすため、プログラミング言語には繰り返し文という、同じ処理を何度も繰り返す構文が用意されています。
今回は、Pythonを使って、繰り返し文の代表「while」と「for」を解説していきます。
while文

まずはwhile文から解説いたします。
while文は非常にシンプルで、
- whileの後ろに条件式を書く
- 条件がTrueを返している限り、永遠に繰り返す
- 繰り返し処理後、else処理をする(elseは省略可能。基本的にelseを使わないことが多いです)
という流れでプログラムが処理されます。
1 2 3 4 5 6 7 |
#while文の処理 i = 1 while i < 5: print(i) i += 1 #結果 1 2 3 4 |
この例でいうと、条件式(iが5より小さい)がTrueを返す限り、処理(iをprintして、iに1を足す)を繰り返します。
無限ループに注意!
1 2 3 4 |
#無限ループ i = 1 while i < 5: print(i) |
これをターミナルから実行すると、
「11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111….」
と無限に1が表示されます。
これは、iに1を足す処理をなくしてしまったため、条件式である「iは5より小さい」という条件を抜けることができなくなってしまったために起こった現象です。
while文は条件式に当てはまる限り、処理をやめません。無限ループに陥って、プログラムが壊れないように注意しましょう。
処理を中断するbreak
while文や、後ほど紹介するfor文は、「break」という記述を書くことで、繰り返しループから無理やり脱出することができます。
1 2 3 4 5 6 7 8 9 10 |
#breakで繰り返しを脱出 i = 1 while i < 5: if i == 3: break print(i) i += 1 #結果 1 2 |
こちらの例では、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度も実行されなかった時
- breakで繰り返しを抜けなかった時
の2パターンです。
この条件をみても、「ん?いつ使うんだろう?」と思いますよね。
あまり頻出するような例ではないのですが、例えば、
- 5つの数字の中に4が含まれているか調べたい。
- 4が含まれていた場合、「ありました!」をprint
- 含まれていない場合、「なかったです・・・」をprint
する処理を書くとしましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
five_numbers = [1, 2, 3, 5, 8] i = 0 while i < 5: if five_numbers[i] == 4: print("ありました!") break i += 1 else: print("なかったです・・・") #結果 なかったです・・・ |
このような書き方をすれば、実現可能です。もちろん、4がなかったときにTrueとFalseを入れ替える変数を用意しておけば、同じ処理をelseを使わずに書けます。
「elseを使えば、こういう書き方も出来るんだ」というぐらいの感覚で覚えておいてください。
for文

for文もwhile文と大きく変わりません。ただ、for文の場合は、while文で言う条件式の部分で、細かく処理の流れを規定することができます。
range()関数
for文を使う際によく一緒に使われるrange()関数。この関数は数字の範囲を指定することで、for文が何回処理を繰り返せば良いのかを設定することができます。
例えば、while文とfor文で、print(i)をiが1〜10まで繰り返したいとします。
1 2 3 4 5 6 7 8 9 10 11 |
#while文 1〜10 i = 1 while i < 11: print(i) i += 1 #for文 1〜10 for i in range(1, 11): print(i) |
このように、for文の場合は、iをfor構文の中で宣言して、range()関数で範囲を規定することによって、繰り返し処理を実行します。
else,break等もwhileと同様
elseやbreak等の処理も、whileと同様の使い方できます。
状況に応じて、これらの記述を使うことで、プログラムを簡潔に保つことができます。
繰り返し分は初歩中の初歩
ココで紹介した「while文」と「for文」は、プログラミングの初歩中の初歩です。
この初歩の技術を完璧に使いこなせるかどうかがプログラマーとしての腕の見せどころ。ぱっと見ただけでわかりやすい簡潔なプログラムを書くために、繰り返し処理をマスターしましょう!