3章では、if
文を使ってプログラムに状況判断をさせる方法を学びましたね。これにより、プログラムはより賢く、柔軟な動きができるようになりました。しかし、もし「『こんにちは』と100回表示してください」とお願いされたら、どうしますか? print("こんにちは")
を100行も書くなんて、想像するだけでうんざりしてしまいますよね。
プログラミングの真の力は、こうした「面倒な繰り返し作業」をコンピュータに肩代わりさせられる点にあります。今回は、そのための強力な武器である「繰り返し処理」をマスターしていきましょう。この章を終えれば、あなたは退屈な作業から解放され、より創造的なことに時間を使えるようになりますよ!
基本的な繰り返しの形「while文」
まず紹介するのは while
文です。これは「ある条件を満たしている間、ずっと処理を繰り返す」という命令です。英語の "while"(~の間)と全く同じ意味ですね。
while
文の構造はif
文とよく似ています。
while 条件式:
条件が満たされている(真)間、繰り返す処理
while
の後に「条件式」を書き、:
(コロン)をつけます。そして、繰り返したい処理を字下げ(インデント)して書く。このルールもif
文と同じです。
では、1から5までの数字を順番に表示するプログラムを見てみましょう。
# カウンター用の変数を用意し、初期値を1にする
count = 1
# countが5以下の間、処理を繰り返す
while count <= 5:
print(count)
# countの値を1増やす(これをしないと無限にループします!)
count = count + 1
print("処理が終了しました。")
このコードの動きを、一緒に追いかけてみましょう。
- 最初に変数
count
に1
が入ります。 while
文の条件count <= 5
をチェックします。1
は5
以下なので、条件は真です。- 字下げされたブロックが実行されます。
print(count)
で1
が表示されます。 - 次に
count = count + 1
が実行され、count
の中身が2
になります。 - ブロックの最後まで来たので、再び
while
の条件チェックに戻ります。 count <= 5
をチェック。2
は5
以下なので、真です。print(count)
で2
が表示され、count
が3
になります。- ...これを繰り返し...
count
が5
の時、print(count)
で5
が表示され、count
が6
になります。while
の条件チェックに戻りcount <= 5
を評価します。6
は5
以下ではないので、条件は偽となります。while
文の繰り返しが終了し、ループを抜け出します。- 最後に
print("処理が終了しました。")
が実行されます。
while
文で最も注意すべき点は、ループ内で条件式に関わる変数の値を更新し、いつか必ずループが終わるように設計することです。もし count = count + 1
の一行を忘れてしまったら、count
は永遠に 1
のままなので、条件は常に真となり、プログラムは無限に 1
を表示し続けて終了できなくなってしまいます(これを無限ループと呼びます)。
こちらが本命!「for文」による繰り返し
while
文は条件が複雑な場合に役立ちます。ですが、単に「リストの全要素に対して同じ処理をしたい」とか「10回だけ処理を繰り返したい」といった、繰り返す回数や範囲が明確な場合は、もっと安全で便利な for
文を使うのが一般的です。
for
文は、リストやタプルのような「コンテナ」から要素を一つずつ順番に取り出して、すべての要素がなくなるまで処理を繰り返します。
# scores というリストを用意
scores = [88, 92, 75, 80, 95]
# scoresリストから、点数を一つずつ s という変数に取り出して処理する
for s in scores:
print(s)
このコードは、scores
というリストの中から、最初の88
をs
という変数に入れ、print(s)
を実行します。次に、92
をs
に入れ、print(s)
を実行。これをリストの最後の要素である95
まで繰り返します。実行結果は、リストの中身が順番に表示されます。
while
文のように、カウンター変数の初期化や更新を自分で書く必要がないため、コードがスッキリして、無限ループに陥る心配もありません。非常に安全で読みやすい書き方だと思いませんか?
「でも、決まった回数だけ繰り返したい時はどうするの?」と思ったあなた、鋭いですね!そのために range()
という便利な機能が用意されています。
range(5)
と書くと、これは [0, 1, 2, 3, 4]
という数列と同じようなものを作り出してくれます。
# 0から4まで、5回繰り返す
for i in range(5):
print(i, "回目のこんにちは")
これを実行すると、0 回目のこんにちは
から 4 回目のこんにちは
までが順番に表示されます。回数を指定するだけで繰り返し処理が書けるので、非常によく使われるテクニックです。
ループの流れを操る「break」と「continue」
基本的にはループは最後まで実行されますが、時には途中でループを抜け出したくなったり、その回の処理だけをスキップしたくなったりすることがあります。そんな時に使うのが break
と continue
です。
繰り返しの強制終了「break」
break
は、ループを即座に中断し、強制的に抜け出すための命令です。例えば、リストの中から特定のデータを探していて、見つかったらそれ以上探す必要がない、といった場面で使います。
numbers = [1, 5, 8, -3, 10, 4]
# numbersリストの中から、負の数(0未満の数)を探す
for num in numbers:
print("チェック中:", num)
if num < 0:
print("負の数を見つけました!")
break # ここでループを中断!
このコードを実行すると、1
, 5
, 8
とチェックしていき、-3
を見つけた時点で「負の数を見つけました!」と表示され、break
が実行されます。その瞬間に for
ループは終了するので、後ろにある 10
や 4
はチェックされません。
今回だけスキップ!「continue」
continue
は、ループを中断するのではなく、その回の処理だけをスキップして、すぐに次の回の処理に進むための命令です。例えば、大量のデータの中から特定の条件のデータだけを除外して処理したい、という時に便利です。
scores = [88, 92, -1, 75, -1, 80] # -1は欠席者
total = 0
# 欠席者を除いて、合計点を計算する
for s in scores:
if s == -1:
continue # sが-1なら、以下の処理をスキップして次のループへ
total = total + s
print(s, "点を加算しました。")
print("合計点は", total, "です。")
このコードでは、リストから取り出した点数 s
が -1
だった場合、continue
が実行されます。すると、その下にある total
への加算や print
文は実行されず、すぐに次の要素(この例だと 75
)を取り出す処理に移ります。結果として、欠席者を除いた合計点だけを正しく計算できるのです。
まとめ:退屈な作業はコンピュータにお任せ!
お疲れ様でした!今回は、プログラミングの強力な機能である「繰り返し」を学びました。
- while文: 「条件が真の間」繰り返す。無限ループに注意が必要。
- for文: リストなどの要素を順番に取り出して繰り返す。安全でよく使われる。
- range():
for
文と組み合わせて「決まった回数」の繰り返しを簡単に実現。 - break: ループを完全に中断して抜け出す。
- continue: 今回の処理だけをスキップして、次の繰り返しに進む。
これらの繰り返し処理を使いこなせるようになると、これまで手作業でやっていた多くの退屈な作業を自動化できるようになります。プログラミングの本当の楽しさが、ここから始まると言ってもいいでしょう。
さて、データ整理術(コンテナ)、判断力(条件分岐)、そして忍耐力(繰り返し)と、プログラムに必要な基本的な能力が揃ってきました。しかし、プログラムが長くなってくると、同じようなコードを何度も書く場面が出てきます。
次の章では、そうした処理を一つの「部品」としてまとめて、名前をつけて何度も使い回せるようにする「関数」というテクニックを学びます。プログラムがもっと整理され、見通しが良くなりますよ!お楽しみに!
5章. 「関数」でコードを部品化しよう
まとめができたら、アウトプットとして演習問題にチャレンジしましょう。