結論: ループ(繰り返し)は、同じ処理を、何度も繰り返す仕組みです。回数や対象が決まっているならfor文、条件が成り立つ間、続けたいならwhile文を使います。注意点は、終わらなくなる「無限ループ」。止まらない時は、多くの環境で Ctrl + C で止められます。
ループとは
同じ作業を、何度も手で書くのは、大変で、ミスのもとです。たとえば、「こんにちは」を3回表示するなら、3行書けば済みます。でも、1,000回なら、どうでしょうか。
ループを使うと、「この処理を、○回繰り返す」「この条件が成り立つ間、繰り返す」と、短く書けます。
for文:回数や対象が決まっている時
for i in range(3):
print("こんにちは")
結果は、「こんにちは」が3回、表示されます。
range(3)は、0、1、2の3つの数を作ります(3は含まれません)iには、繰り返すたびに、0、1、2が順に入ります- 字下げ(インデント)した部分が、繰り返される処理です
リストの全部の要素を、順に処理する
fruits = ["りんご", "みかん", "ぶどう"]
for fruit in fruits:
print(fruit)
リストの要素を、1つずつ取り出して、処理します。**「全部に対して、同じことをする」**時の、基本の形です。変数の基本は、変数とはをご覧ください。
while文:条件が成り立つ間、続ける時
n = 3
while n > 0:
print(n)
n = n - 1
結果は、3、2、1 と表示されます。
n > 0という条件を確認する- 成り立つ(はい)なら、処理をする
nを1減らして、もう一度、条件を確認する- 成り立たなく(いいえ)なったら、終わる
使い分けの目安
| こんな時 | 使うもの | 例 |
|---|---|---|
| 回数が決まっている | for | 10回繰り返す |
| リストなどの全部を処理する | for | 全員の名前を表示する |
| 何回で終わるか分からない | while | 入力が正しくなるまで、聞き直す |
| 条件が成り立つ間、続ける | while | 残りが0になるまで、減らす |
迷ったら、終わりが決まっているfor文を選ぶのが安全です。
無限ループ:終わらなくなる
while文では、条件が、いつか成り立たなくなるようにしておく必要があります。
n = 3
while n > 0:
print(n)
この例では、n が減らないため、n > 0 がずっと成り立ち、3を表示し続けます。これが、無限ループです。
止め方と、防ぎ方
- 実行を止める:ターミナルやコマンドプロンプトなら、多くの環境でCtrl + C。エディタの場合は、停止ボタンを使う
- 原因を探す:条件に使う変数が、ループの中で変わっているかを確認する
- 防ぐ:最大の繰り返し回数を決める(for文にする、回数のカウンターを持つ)
実際のシステムでも、無限に繰り返す処理は、障害の原因になります。たとえば、外部のサービスにつながらない時に、何度も再試行する処理は、APIの再試行の決め方や、APIの呼び出しループへの対策で解説しています。
break と continue
| 命令 | 動き | 使い方の例 |
|---|---|---|
break |
ループを、そこで終わらせる | 探していた値が見つかったら、抜ける |
continue |
その回の残りを飛ばして、次の回へ | 空のデータは、処理せずに飛ばす |
for n in [3, 8, 5, 12]:
if n > 10:
print("見つかりました:", n)
break
10より大きい数が見つかった時点で、ループを終わらせます。この例では、12が見つかったところで終わります。条件の書き方は、IF関数の使い方の考え方と同じです。
JavaScriptでは
考え方は、同じです。書き方だけが違います。
for (let i = 0; i < 3; i++) {
console.log("こんにちは");
}
let i = 0:最初の値i < 3:続ける条件i++:1回ごとに、iを1増やす
よくあるつまずき
| 症状 | 原因 | 対処 |
|---|---|---|
| 終わらない | while文の条件が、変わらない | 変数を、ループの中で変化させる |
| 回数が1つ少ない・多い | range(3)の終わりは、含まれない |
0始まりと、終わりの扱いを確認する |
| 処理が繰り返されない | 字下げが、足りない | 繰り返したい行を、字下げする |
| 結果が想定と違う | 途中で、値を書き換えている | printで、途中の値を確認する(デバッグとは) |
まとめ
- ループは、同じ処理を繰り返す仕組み
- 回数や対象が決まっていればfor、条件が成り立つ間続けるならwhile
- while文は、条件に使う変数を変化させないと、無限ループになる。止める時は、多くの環境でCtrl + C
- 途中で抜けるのがbreak、その回だけ飛ばすのがcontinue
関連記事:Pythonとは、変数とは、関数とは、アルゴリズムとは、デバッグとは
あわせて読みたい:条件分岐(if文)とは
あわせて読みたい:再帰(再帰関数)とは、辞書(dict)型とは