本文へ進む
情報Ⅰ プログラミング演習道場

第3章 選択構造 ― if文

更新:2026-09-09

初めて訪れた方は学習ガイドへ。例題の結果を予想してから実行し、値を変えて確かめ、問題の空欄を自分で書いて進めましょう。

入力したコードは再読み込みで消えます。残しておきたい内容は手元へコピーしてください。実行できないときは読み込みの対処を確認できます。

この章で学べること
この章のゴール:「条件によって動きが変わるプログラム」を読めて、書けるようになること。選択構造は共通テストのプログラミング問題に毎回必ず登場する、最重要の文法です。
目次
  1. STEP 1 もし〜なら ― if文
  2. STEP 2 そうでなければ ― else
  3. STEP 3 3つ以上に分ける ― elif
  4. STEP 4 条件を組み合わせる ― and・or
  5. エラー例 ― よくあるエラーを知ろう!
  6. 演習問題
  7. 自由実行スペース

STEP 1もし〜なら ― if文

「テストが80点以上ならほめる」のように、条件によってやることを変えるのが選択構造です。

Pythonでは if 条件: と書き、条件が成り立ったときだけ実行したい行を、字下げ(インデント)して書きます。行の頭の空白が「if の中身ですよ」という印になっています。(このサイトでは字下げを半角スペース2回で行います。)最初はわかりにくいですが、重要なポイントです。

tenki = '晴れ'いつも実行される
if tenki == '晴れ':条件。ここから分かれ道
print('せんたく日和です')ifの中
print('ふとんも干せます')ifの中(ここまで)
print('今日も1日がんばりましょう')字下げが終わったら、ifの外
図1 色のついた部分(字下げした行)だけが「ifの中」。条件が成り立つときだけ実行される
score = 85 80以上? はい 合格です! と表示 いいえ 次の行へ進む
図2 if文は「はい」のときだけ寄り道して、また合流する

条件のところでは比較演算子を使います。特に「等しい」は = ではなく == と書くことに注意してください(= は代入の記号でしたね)。

書き方意味書き方意味
a == b等しいa != b等しくない
a > baが大きいa >= ba以上
a < baが小さいa <= ba以下
たしかめてみよう

実行して、どの行が表示されるかを確かめましょう。そのあと、1行目を tenki = '雨' に変えて再実行し、字下げした行だけがスキップされることを確かめましょう。

最初のコードを読む(実行できないとき)
tenki = '晴れ'
if tenki == '晴れ':
  print('せんたく日和です')
print('今日も1日がんばりましょう')
確認ポイントを見る(実行してから開くこと)
'晴れ' のときは2行とも表示され、'雨' に変えると字下げした行だけが飛ばされて「今日も1日がんばりましょう」だけが表示されます。字下げされた行がif文の中身である——この感覚に早く慣れましょう!
アラン先生
このサイトでは、字下げは半角スペース2回というルールで行われています。全角スペースを使うとエラーになってしまうので注意してください。

例題 1

点数によってメッセージが変わるプログラムです。score の値をいろいろ変えて実行してみましょう。

最初のコードを読む(実行できないとき)
score = 85
if score >= 80:
  print('合格です!')
print('おつかれさまでした')
アラン先生
字下げは、ただの見た目の問題ではなくプログラミングのルールそのものなんです。共通テストの問題文でも字下げは正確に印刷されています。「どこまでがifの中か」を読み取ることがプログラミングの読解にはとても重要です。
やってみよう 3-1

kion が30以上なら「真夏日です」と表示されるように、if文の行を書き加えなさい。

<実行結果例>真夏日です
最初のコードを読む(実行できないとき)
kion = 32
# ▼ ここに1行書こう

  print('真夏日です')
解答例を見る(まず自分で書いてから開くこと)
kion = 32
if kion >= 30:
  print('真夏日です')
if kion >= 30: の行を書けたら正解です。行の最後の :(コロン)を忘れやすいので注意しましょう。また、kionを30よりも小さい数字に変えて実行するとどうなるか確かめてみましょう。

STEP 2そうでなければ ― else

「80点以上ならほめる、そうでなければはげます」のように、条件が成り立たなかったときのやることも決めたいときは、else: を使います。ifとelseは必ずどちらか一方だけが実行されます。

if num % 2 == 0:条件
print('偶数です')ifの範囲:成り立つとき
else:そうでなければ
print('奇数です')elseの範囲:成り立たないとき
図3 青の範囲と赤の範囲は、どちらか一方だけが実行される
条件は成り立つ? はい ifの中を実行 いいえ elseの中を実行 どちらか一方だけが実行される
図4 if と else は、二股の分かれ道
たしかめてみよう

第2章で学んだ「% 2 のあまりで偶数・奇数がわかる」を、if-elseと組み合わせた定番プログラムです。num の値を変えて、両方の道を通してみましょう。

最初のコードを読む(実行できないとき)
num = 7
if num % 2 == 0:
  print('偶数です')
else:
  print('奇数です')
確認ポイントを見る(実行してから開くこと)
あまりが0かどうかを == で判定しています。この「% 2 == 0 なら偶数」は共通テストでもそのまま登場する、いちばん有名な条件式です。また、「% 2 == 1 なら奇数」もおさえておきましょう。

例題 2

入力と組み合わせた例です。パスワードが合っているかを判定します。

最初のコードを読む(実行できないとき)
angou = input('あいことばを入力してください:')
if angou == 'ひらけごま':
  print('正解!とびらが開きました')
else:
  print('ちがうようです…')
やってみよう 3-2

合計点が450点以上なら「目標達成!」、そうでなければ「あと少し!」と表示されるように、elseの部分(2行)を書き加えなさい。

<実行結果例>あと少し!
最初のコードを読む(実行できないとき)
goukei = 430
if goukei >= 450:
  print('目標達成!')
# ▼ ここに2行書こう
解答例を見る(まず自分で書いてから開くこと)
goukei = 430
if goukei >= 450:
  print('目標達成!')
else:
  print('あと少し!')
else: の行と、字下げした print() の2行です。elseには条件を書かない(「それ以外ぜんぶ」だから)のがポイントです。

STEP 33つ以上に分ける ― elif

分かれ道を3つ以上にしたいときは、ifとelseの間に elif 条件:(そうでなくもし)をはさみます。上から順に条件を調べて、最初に成り立ったところだけが実行されます。elifは何個でもつなげられます。まずは読めるように、そして次の問題で自分でも書いてみましょう。

例題 3

点数を成績(A・B・C・F)に変えるプログラムです。score を90、85、72、20などに変えて、どの道を通るか確かめましょう。

最初のコードを読む(実行できないとき)
score = 72
if score >= 90:
  print('A')
elif score >= 80:
  print('B')
elif score < 30:
  print('F')
else:
  print('C')
アラン先生
85点のとき、Aの条件(90以上)はダメで、次のBの条件(80以上)で成り立つのでBと表示されます。一度どれかが成り立ったら、残りはもう調べない」というように実行されるルールとなっています。
やってみよう 3-3

ねだんが500円以上なら「高い」、そうでなくもし300円以上なら「ふつう」、それ以外は「安い」。elifの行を書き加えなさい。

<実行結果例>ふつう
最初のコードを読む(実行できないとき)
nedan = 350
if nedan >= 500:
  print('高い')
# ▼ ここに1行書こう

  print('ふつう')
else:
  print('安い')
解答例を見る(まず自分で書いてから開くこと)
nedan = 350
if nedan >= 500:
  print('高い')
elif nedan >= 300:
  print('ふつう')
else:
  print('安い')
elif nedan >= 300: が書けたら正解です。elifの行は字下げしない(ifと同じ高さに書く)ことにも注目してください。

STEP 4条件を組み合わせる ― and・or

「国語数学70点以上」のように条件を2つ組み合わせたいときは and(両方成り立つとき)、「土曜または日曜」なら or(どちらか一方でも成り立つとき)を使います。

書き方の例成り立つのは
a >= 70 and b >= 70aもbも70以上のとき(両方)
day == '土' or day == '日'dayが'土'か'日'のとき(どちらかでOK)
たしかめてみよう

kokugosugaku の値を70より小さくすると表示が消えることを確かめましょう。andは「両方」が条件です。

最初のコードを読む(実行できないとき)
kokugo = 75
sugaku = 82
if kokugo >= 70 and sugaku >= 70:
  print('両方合格!')
ノイマン先生
いいかね、and は2026年の共通テストで本試・追試の両方に出た。追試では「(条件A)□(条件B)」の□に andor のどちらを入れるかを選ばせる形式だった。「andは両方、orはどちらか」自分でプログラムを書いてみて、しっかり理解したまえ。
やってみよう 3-4

day'土' または '日' なら「休みです」と表示されるように、if文の行を書き加えなさい。

<実行結果例>休みです
最初のコードを読む(実行できないとき)
day = '日'
# ▼ ここに1行書こう

  print('休みです')
解答例を見る(まず自分で書いてから開くこと)
day = '日'
if day == '土' or day == '日':
  print('休みです')
よくあるまちがいは if day == '土' or '日': と書いてしまうことです。orの右側にも day == をきちんと書く必要があります。day = '土' や day = '日' というミスも慣れていないうちはやってしまいがちです。注意しましょう。

エラー例 ― よくあるエラーを知ろう!

if文は書き方が細かいので、エラーが起きやすいです。よくある3つのエラーを、わざと起こして読み方に慣れましょう。読み方はいつも同じ、いちばん最後の行からです。

エラー例 1 コロン(:)のつけ忘れ

if の行の最後の : が抜けています。

最初のコードを読む(実行できないとき)
score = 85
if score >= 80
  print('合格です!')
エラーの読み方を見る(実行してから開くこと)
SyntaxError: expected ':' と出ます。「: があるはずだよ」と場所まで教えてくれる、とても親切なエラーです。ifの行の最後に : をつければ直ります。

エラー例 2 字下げのし忘れ

if の次の行が字下げされていません。

最初のコードを読む(実行できないとき)
score = 85
if score >= 80:
print('合格です!')
エラーの読み方を見る(実行してから開くこと)
IndentationError: expected an indented block と出ます。IndentationError(インデンテーションエラー)は「字下げがおかしい」という意味の、Python特有のエラーです。ifの中身の行の頭にスペース2つを入れれば直ります。

エラー例 3 = と == のとりちがえ

条件のところに、比較の == ではなく代入の = を書いてしまっています。

最初のコードを読む(実行できないとき)
score = 85
if score = 80:
  print('合格です!')
エラーの読み方を見る(実行してから開くこと)
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? と出ます。「== のまちがいでは?」とPythonが推理までしてくれています。= は代入、== は比較。この区別は共通テストでも問われる急所です。

演習問題

問 3-1

入力した整数が偶数か奇数かを判定するプログラムを完成させなさい。以下の実行結果を参考にしなさい。

<実行結果例1>整数を入力してください:122 あなたが入力したのは偶数です
<実行結果例2>整数を入力してください:357 あなたが入力したのは奇数です
最初のコードを読む(実行できないとき)
num = input('整数を入力してください:')
num = int(num)
# ▼ ここから下に書いてみよう
解答例を見る(まず自分で書いてから開くこと)
num = input('整数を入力してください:')
num = int(num)
if num % 2 == 0:
  print('あなたが入力したのは偶数です')
else:
  print('あなたが入力したのは奇数です')
「たしかめてみよう」で見た % 2 == 0 を、入力と組み合わせた問題でした。
問 3-2

「3+5」の解を入力させ、まちがっていた場合だけ「不正解です」と表示するプログラムを作りなさい。ただし、演算子 == 以外の比較演算子を使うこと。以下の実行結果を参考にしなさい。

<実行結果例1>3+5の解を入力してください:8
<実行結果例2>3+5の解を入力してください:2 不正解です
最初のコードを読む(実行できないとき)
num = input('3+5の解を入力してください:')
num = int(num)
# ▼ ここから下に書いてみよう
解答例を見る(まず自分で書いてから開くこと)
num = input('3+5の解を入力してください:')
num = int(num)
if num != 8:
  print('不正解です')
「等しくない」の != を使うと、elseなしの1つのifだけで書けます。正解のときに何も表示されないのは、それで正しい動きです。
問 3-3

テストの点数を入力させて、90以上なら「A」、80以上なら「B」、30未満なら「F」、それ以外は「C」と表示するプログラムを自分で考えて作りなさい。以下の実行結果を参考にしなさい。

<実行結果例1>テストの点数を入力してください:90 A
<実行結果例2>テストの点数を入力してください:72 C
最初のコードを読む(実行できないとき)
# ▼ ここに書いてみよう
解答例を見る(まず自分で書いてから開くこと)
num = input('テストの点数を入力してください:')
num = int(num)
if num >= 90:
  print('A')
elif num >= 80:
  print('B')
elif num < 30:
  print('F')
else:
  print('C')
例題3とほぼ同じ構造を、今度はゼロから組み立てる問題でした。elifの順番を変えると結果が変わることも、余裕があれば試してみてください。
問 3-4(発展)

映画館の入場料を計算するプログラムを自分で考えて作りなさい。年齢を入力させて、12歳以下なら500円、65歳以上なら600円、それ以外は1000円と表示すること。

<実行結果例>年齢:16 入場料は 1000 円です
最初のコードを読む(実行できないとき)
# ▼ ここに書いてみよう
解答例を見る(まず自分で書いてから開くこと)
nenrei = input('年齢:')
nenrei = int(nenrei)
if nenrei <= 12:
  print('入場料は 500 円です')
elif nenrei >= 65:
  print('入場料は 600 円です')
else:
  print('入場料は 1000 円です')
12以下・65以上のような「はしっこの条件」を先に片づけて、残りをelseでまとめるのがきれいな書き方です。いろいろな年齢を入れて、料金が正しく変わるか試してみてください。

自由実行スペース

思いついたことを自由に試すための場所です。学んだif文で、自分だけの「診断プログラム」を作ってみるのもおすすめです。

最初のコードを読む(実行できないとき)
# 自由に書いてみよう
ノイマン先生
ちなみに共通テストの表記では、if文は「もし〜ならば:」、elseは「そうでなければ:」と日本語で書かれるんだ。字下げの意味はPythonとまったく同じ。ここで身についた読み方が、そのまま試験で通用する。

たとえば、この章の「真夏日プログラム」は、共通テストの紙面ではこう書かれます。

(1) もし kion >= 30 ならば: (2)   表示する("真夏日です") (3) そうでなければ: (4)   表示する("真夏日ではありません")

日本語になっただけで、形はPythonとそっくりだとわかるはずです。読み替えの練習は、第7章「共通テスト表記との対応」でたっぷりやります。

この章の確認:理由まで説明してみよう

境界の値がどの条件に当たるかを説明できますか。

score = 60
if score >= 60:
  print('A')
else:
  print('B')
出力と考え方を見る

出力:A

>= は等しい場合も真です。60ちょうどなのでAが表示され、elseの中は実行されません。

条件を score > 60 に変えると、60のときはどちらを表示するでしょうか。

変更後の答えを見る

Bです。> には等しい場合を含まないため、条件が偽になります。

自分でコードを書き換えて、この章の自由実行スペースで確かめてください。出力の一致だけでなく、変数がどの順に変わったかも説明できれば次へ進みましょう。

つまずいたときの説明学習の進め方参考資料

実行環境を準備中…