みならいノート

情報Ⅰ 2027年度版

分岐と繰り返し

みならいノートで覚える(無料)

このノートの問いがそのまま復習カードになり、忘れかけたころに出題されます。

0. どういうまとまりか

3 つの基本構造のうち、分岐と反復を Python で書く方法です。
プログラムを読む問題のほとんどは、どの枝に入るかと何回まわるかを正しく追えるかで決まります。

書き方 構造 いつ使うか
if・elif・else 分岐 条件によって処理を選ぶ
for i in range(…) 反復(回数が決まっている) 決めた回数、または配列の要素の数だけ繰り返す
while 条件: 反復(条件で続ける) 条件が成り立つ間、繰り返す。回数が前もって分からないとき

分かれ目は次の 3 つ。

1. 分岐

根拠: 学習指導要領 情報Ⅰ-(3)-ア-(イ)

Python では、if の条件の後に : を書き、実行する処理を字下げ(インデント)して書きます。
字下げの範囲が、その条件で実行されるまとまりです。

if・elif・else を並べたとき、条件が複数成り立つ場合はどれが実行されるか?

上から調べて、最初に成り立った 1 つだけ

残りの elif・else は調べずに飛ばす。どれも成り立たないときだけ else が実行される。

点数 s で「80 以上は A、60 以上は B、それ以外は C」と分けるとき、条件を書く順番で気をつけることは?

範囲の広い条件より、狭い条件(s >= 80)を先に書く

s >= 60 を先に書くと、90 点も最初の条件に当てはまり B になってしまう。

Python で、分岐や繰り返しの中で実行する処理の範囲は、何で表すか?

字下げ(インデント)

if や for の行末に : を書き、次の行から字下げした部分が中身になる。

2. for と range

根拠: 学習指導要領 情報Ⅰ-(3)-ア-(イ)

for は、range(…) や配列から値を 1 つずつ取り出して変数に入れ、そのたびに中身を実行します。

for i in range(5): で、i がとる値は?

0, 1, 2, 3, 4 の 5 つ

range(n) は 0 から始まり、n は含まない。繰り返しは n 回。

for i in range(2, 7): の中身は何回実行されるか?

5 回(i は 2, 3, 4, 5, 6)

range(a, b) は a から b−1 まで。回数は b−a 回。

for i in range(1, 10, 3): で、i がとる値は?

1, 4, 7

3 つ目の引数は増やす幅(増分)。10 は含まないので、10 には届かない。

繰り返しの中に繰り返しを入れる(ネスト)とき、外側が m 回、内側が n 回なら、内側の中身は全部で何回実行されるか?

m × n 回

外側の 1 回ごとに、内側が n 回まわる。表の全マスを調べるときなどに使う。

3. while と無限ループ

根拠: 学習指導要領 情報Ⅰ-(3)-ア-(イ)

while は、まず条件を調べ、成り立てば中身を実行して、また条件に戻ります。
最初から条件が成り立たなければ、中身は 1 回も実行されません。

while の繰り返しが終わらなくなる(無限ループ)のは、どんなときか?

中身を実行しても、条件がいつまでも成り立ち続けるとき

条件に使う変数を中身で更新し忘れると起こる。例: while i < 10: の中で i を増やしていない。

break は繰り返しの中で何をするか?

その繰り返しを途中で打ち切り、繰り返しの後ろへ進む

探していた値が見つかったときなどに使う。

4. 合計と最大値を求める形

根拠: 学習指導要領 情報Ⅰ-(3)-ア-(イ)

合計・個数・最大値は、繰り返しの前に入れ物を用意し、中で少しずつ更新する、という同じ形で求めます。

配列の合計を繰り返しで求めるとき、合計を入れる変数は繰り返しの前にどうしておくか?

0 を代入しておく(初期化)

繰り返しの中で total = total + a[i] と足していく。初期化を忘れると正しく足せない。

配列の最大値を繰り返しで求めるとき、最大値を入れる変数の最初の値として確実なのは?

配列の最初の要素(a[0])

あとの要素を順に比べ、今の最大値より大きければ入れ替える。0 から始めると、全部が負の数のとき誤る。

練習問題

問 1 次のプログラムを実行すると、何と表示されるか。

total = 0
for i in range(1, 6):
    if i % 2 == 1:
        total = total + i
print(total)

9

i は 1 から 5 まで。2 で割った余りが 1 になる奇数の 1, 3, 5 だけを足すので、1 + 3 + 5 = 9。

問 2 次のプログラムを実行すると、何と表示されるか。

count = 0
for i in range(4):
    for j in range(i):
        count = count + 1
print(count)

6

内側の回数が i によって変わる。i が 0 のとき 0 回、1 のとき 1 回、2 のとき 2 回、3 のとき 3 回で、0 + 1 + 2 + 3 = 6。

問 3 次のプログラムを実行すると、何と表示されるか。

n = 1
k = 0
while n < 100:
    n = n * 3
    k = k + 1
print(n, k)

243 5

n は 3, 9, 27, 81, 243 と変わり、そのたびに k が 1 増える。
81 のときはまだ 100 未満なのでもう 1 回まわり、243 になったところで条件が成り立たなくなって終わる。

問 4 次のプログラムを実行すると、何と表示されるか。

scores = [62, 85, 47, 85, 90, 71]
best = scores[0]
pos = 0
for i in range(1, len(scores)):
    if scores[i] > best:
        best = scores[i]
        pos = i
print(best, pos)

90 4

best は 62 から始まり、85(添字 1)で更新、次の 85(添字 3)は「より大きい」ではないので更新しない。
90(添字 4)で更新し、71 では更新しない。pos には、最大値の添字 4 が残る。

このノートの 11 問を、暗記カードで復習できます

みならいノートで覚える(無料)

答えを隠して出題し、忘れそうなころにもう一度出します。

前 変数と配列
関数 次

このノートは無償で公開しています。当方は内容の正確性・完全性・最新性を保証しません。学習にあたっては、法令の原文・公式の出題範囲その他の一次資料を必ずご確認ください。試験への合格その他の効果を保証するものでもありません。

本文の転載・再配布はお断りしています(利用規約)。手元に置いて使いたい方は、ストアから Markdown ファイルとして入手できます。