反復構造とは、同じ処理を繰り返し実行する仕組みのことで、Pythonではfor文とwhile文で書きます。情報Ⅰの共通テスト・定期テストでは、繰り返しの回数や条件を読み取ってプログラムの実行結果を答える問題が頻出です。この記事ではfor文・while文の書き方の違いを、例題と演習問題を通して整理します。
反復構造とは?
みなさん、「反復構造」という言葉を聞いたことがありますか?
反復構造とは、同じ処理を繰り返し実行する仕組みのことです。
プログラミングにおいては、特定の条件を満たす間、または決められた回数だけ命令を繰り返す場合に使われます。
今回は、反復構造を解説していきます。
反復構造の具体例
例えば、毎日「おはよう」と言うのを10回繰り返すとしたら、どうしますか?
これをPythonで表現すると、次のようになります。
for i in range(10):
print("おはよう")
このコードでは、print("おはよう")という命令が10回実行されます。これが反復構造の基本です。
実際にやってみよう
それでは、簡単な例題を試してみましょう。
例題:1から5までの数字を表示するプログラム
for i in range(1, 6):
print(i)
このプログラムでは、1から5までの数字が順番に表示されます。出力は以下のようになります:
1
2
3
4
5
コードの解説
for i in range(1, 6):range(1, 6)は「1から5まで」の数字を順番に作り出します。iという変数には、その数字が1つずつ入ります。
print(i)iに入っている数字を画面に表示します。
while文を使った反復構造
Pythonではfor文だけでなく、while文も使って反復構造を実現できます。
例えば、1から5までの数字をwhile文で表示する場合は次のように書きます。
num = 1
while num <= 5:
print(num)
num += 1
出力はfor文と同じく:
1
2
3
4
5
ここで、num += 1はnum = num + 1と同じ意味で、変数numを1ずつ増やしています。
こちらもチェック
while文を使った反復構造の解説をさらに丁寧に
for文とwhile文の使い分け
for文とwhile文はどちらも「繰り返し」を行う仕組みですが、使うべき場面が違います。
- for文:繰り返す回数があらかじめ決まっているときに使う
- while文:ある条件を満たしている間だけ繰り返したい、回数が事前にはわからないときに使う
例:貯金がいくらで目標金額に届くか
たとえば「1000円を毎月貯金して、目標の5000円に届くまで続ける」というプログラムを考えます。「何ヶ月かかるか」は事前にはわからないので、while文が向いています。
# while文で書く場合
money = 0
month = 0
while money < 5000:
money += 1000
month += 1
print(f"{month}ヶ月目: {money}円")
print(f"{month}ヶ月で目標達成!")
出力は:
1ヶ月目: 1000円
2ヶ月目: 2000円
3ヶ月目: 3000円
4ヶ月目: 4000円
5ヶ月目: 5000円
5ヶ月で目標達成!
一方、「毎月1000円を、決まった12ヶ月間貯金する」というように回数が最初からわかっている場合は、for文の方がシンプルに書けます。
# for文で書く場合(12ヶ月と決まっている)
money = 0
for month in range(1, 13):
money += 1000
print(f"{month}ヶ月目: {money}円")
覚え方
「回数が決まっている → for文」
「条件が満たされるまで → while文」
同じ処理でも、目的(回数固定か、条件達成までか)によってどちらを使うか判断するのがポイントです。
演習問題
それでは、みなさんの力を試してみましょう!
演習1:2の倍数を表示するプログラム
1から10までの中で、2の倍数だけを表示するプログラムを書いてみてください。
答え
for i in range(1, 11):
if i % 2 == 0:
print(i)
プログラムの動き
for i in range(1, 11):で、1から10までの数字を1つずつ変数iに代入します。if i % 2 == 0:は、iが2で割り切れるかどうかを判定する条件式です。割り切れる場合は条件が真となり、print(i)が実行されます。- 条件を満たさない場合は何もせず、次の
iに進みます。
出力:
2
4
6
8
10
演習2:while文でカウントダウン
10から1までカウントダウンして、最後に「発射!」と表示するプログラムを書いてみてください。
答え
num = 10
while num > 0:
print(num)
num -= 1
print("発射!")
プログラムの動き
- 最初に変数
numに10を代入します。これがカウントダウンのスタート地点です。 while num > 0という条件をチェックします。ここでは、「numが0より大きい間だけ繰り返し処理を実行する」という意味です。- 条件が
True(つまり、numが0より大きい)である場合:print(num)でnumを表示します。num -= 1でnumを1減らします。
- 条件が
False(つまり、numが0以下)になると、while文のループが終了し、次のprint("発射!")が実行されます。
出力:
10
9
8
7
6
5
4
3
2
1
発射!
発展問題
発展問題:九九を表示するプログラム
1から9までの掛け算の結果をすべて表示するプログラムを作成してください。
答え
for i in range(1, 10):
for j in range(1, 10):
print(f"{i} × {j} = {i * j}")
プログラムの解説
- 外側のループ
for i in range(1, 10):iが1から9まで変化します。- このループは「九九の段」を表しています(例:1の段、2の段…)。
- 内側のループ
for j in range(1, 10):jも1から9まで変化します。iが固定されている間に、jが1から9まで変化してすべての掛け算を計算します。
- 掛け算の計算と表示
print(f"{i} × {j} = {i * j}")i * jで掛け算を計算し、その結果を表示します。- f文字列(f-string)を使うことで、わかりやすくフォーマットされた出力が可能になります。
- 改行
print()- 内側のループが終わるごとに空行を挿入して、次の段と区切りをつけています。
出力:
1 × 1 = 1
1 × 2 = 2
1 × 3 = 3
...
9 × 9 = 81
まとめ
反復構造を使うと、同じ処理を効率よく繰り返すことができます。
今回学んだfor文やwhile文は、プログラムを書く上でとても重要な要素です。
次回は、さらに応用的なプログラムに挑戦してみましょう!


コメント