if文で「もし〜なら」の分かれ道を作るやり方- 字下げ(インデント)の大切な意味
- 比較演算子(
==!=>=など)の読み方 else・elifと、条件を組み合わせるand・or
STEP 1もし〜なら ― if文
「テストが80点以上ならほめる」のように、条件によってやることを変えるのが選択構造です。
if 条件: と書き、条件が成り立ったときだけ実行したい行を、字下げ(インデント)して書きます。行の頭の空白2つが「if の中身ですよ」という印になっています。最初はわかりにくいですが、重要なポイントです。
条件のところでは比較演算子を使います。特に「等しい」は = ではなく == と書くことに注意してください(= は代入の記号でしたね)。
| 書き方 | 意味 | 書き方 | 意味 |
|---|---|---|---|
a == b | 等しい | a != b | 等しくない |
a > b | aが大きい | a >= b | a以上 |
a < b | aが小さい | a <= b | a以下 |
実行して、どの行が表示されるかを確かめましょう。そのあと、1行目を tenki = '雨' に変えて再実行し、字下げした行だけがスキップされることを確かめましょう。
確認ポイントを見る(実行してから開くこと)
'晴れ' のときは2行とも表示され、'雨' に変えると字下げした行だけが飛ばされて「今日も1日がんばりましょう」だけが表示されます。字下げされた行がif文の中身である——この感覚に早く慣れましょう!例題 1
点数によってメッセージが変わるプログラムです。score の値をいろいろ変えて実行してみましょう。
kion が30以上なら「真夏日です」と表示されるように、if文の行を書き加えなさい。
解答例を見る(まず自分で書いてから開くこと)
kion = 32
if kion >= 30:
print('真夏日です')
if kion >= 30: の行を書けたら正解です。行の最後の :(コロン)を忘れやすいので注意しましょう。また、kionを30よりも小さい数字に変えて実行するとどうなるか確かめてみましょう。STEP 2そうでなければ ― else
「80点以上ならほめる、そうでなければはげます」のように、条件が成り立たなかったときのやることも決めたいときは、else: を使います。ifとelseは必ずどちらか一方だけが実行されます。
第2章で学んだ「% 2 のあまりで偶数・奇数がわかる」を、if-elseと組み合わせた定番プログラムです。num の値を変えて、両方の道を通してみましょう。
確認ポイントを見る(実行してから開くこと)
== で判定しています。この「% 2 == 0 なら偶数」は共通テストでもそのまま登場する、いちばん有名な条件式です。また、「% 2 == 1 なら奇数」もおさえておきましょう。例題 2
入力と組み合わせた例です。パスワードが合っているかを判定します。
合計点が450点以上なら「目標達成!」、そうでなければ「あと少し!」と表示されるように、elseの部分(2行)を書き加えなさい。
解答例を見る(まず自分で書いてから開くこと)
gokei = 430
if gokei >= 450:
print('目標達成!')
else:
print('あと少し!')
else: の行と、字下げした print() の2行です。elseには条件を書かない(「それ以外ぜんぶ」だから)のがポイントです。
STEP 33つ以上に分ける ― elif
分かれ道を3つ以上にしたいときは、ifとelseの間に elif 条件:(そうでなくもし)をはさみます。上から順に条件を調べて、最初に成り立ったところだけが実行されます。elifは共通テストでの出題は少なめなので、「読めればOK」くらいの気持ちで大丈夫です。
例題 3
点数を成績(A・B・C・F)に変えるプログラムです。score を90、85、72、20などに変えて、どの道を通るか確かめましょう。
ねだんが500円以上なら「高い」、そうでなくもし300円以上なら「ふつう」、それ以外は「安い」。elifの行を書き加えなさい。
解答例を見る(まず自分で書いてから開くこと)
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 >= 70 | aもbも70以上のとき(両方) |
day == '土' or day == '日' | dayが'土'か'日'のとき(どちらかでOK) |
kokugo や sugaku の値を70より小さくすると表示が消えることを確かめましょう。andは「両方」が条件です。
and と or は2026年の共通テストで本試・追試の両方に出た。「(条件A)and(条件B)」の空欄にどちらを入れるかを選ばせる形式だ。「andは両方、orはどちらか」自分でプログラムを書いてみて、しっかり理解したまえ。
day が '土' または '日' なら「休みです」と表示されるように、if文の行を書き加えなさい。
解答例を見る(まず自分で書いてから開くこと)
day = '日'
if day == '土' or day == '日':
print('休みです')
よくあるまちがいは if day == '土' or '日': と書いてしまうことです。orの右側にも day == をきちんと書く必要があります。day = '土' や day = '日' というミスも慣れていないうちはやってしまいがちです。注意しましょう。エラー例 ― よくあるエラーを知ろう!
if文は複雑なのでエラーをしやすいです。よくある3つのエラーを、わざと起こして読み方に慣れましょう。読み方はいつも同じ、いちばん最後の行からです。
エラー例 1 コロン(:)のつけ忘れ
if の行の最後の : が抜けています。
エラーの読み方を見る(実行してから開くこと)
SyntaxError: expected ':' と出ます。「: があるはずだよ」と場所まで教えてくれる、とても親切なエラーです。ifの行の最後に : をつければ直ります。
エラー例 2 字下げのし忘れ
if の次の行が字下げされていません。
エラーの読み方を見る(実行してから開くこと)
IndentationError: expected an indented block と出ます。IndentationError(インデンテーションエラー)は「字下げがおかしい」という意味の、Python特有のエラーです。ifの中身の行の頭にスペース2つを入れれば直ります。
エラー例 3 = と == のとりちがえ
条件のところに、比較の == ではなく代入の = を書いてしまっています。
エラーの読み方を見る(実行してから開くこと)
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? と出ます。「== のまちがいでは?」とPythonが推理までしてくれています。= は代入、== は比較。この区別は共通テストでも問われる急所です。
演習問題
入力した整数が偶数か奇数かを判定するプログラムを完成させなさい。以下の実行結果を参考にしなさい。
解答例を見る(まず自分で書いてから開くこと)
num = input('整数を入力してください:')
num = int(num)
if num % 2 == 0:
print('あなたが入力したのは偶数です')
else:
print('あなたが入力したのは奇数です')
「たしかめてみよう」で見た % 2 == 0 を、入力と組み合わせた問題でした。
「3+5」の解を入力させ、まちがっていた場合だけ「不正解です」と表示するプログラムを作りなさい。ただし、演算子 == 以外の比較演算子を使うこと。以下の実行結果を参考にしなさい。
解答例を見る(まず自分で書いてから開くこと)
num = input('3+5の解を入力してください:')
num = int(num)
if num != 8:
print('不正解です')
「等しくない」の != を使うと、elseなしの1つのifだけで書けます。正解のときに何も表示されないのは、それで正しい動きです。
テストの点数を入力させて、90以上なら「A」、80以上なら「B」、30未満なら「F」、それ以外は「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の順番を変えると結果が変わることも、余裕があれば試してみてください。
映画館の入場料を計算するプログラムを自分で考えて作りなさい。年齢を入力させて、12歳以下なら500円、65歳以上なら600円、それ以外は1000円と表示すること。
解答例を見る(まず自分で書いてから開くこと)
nenrei = input('年齢:')
nenrei = int(nenrei)
if nenrei <= 12:
print('入場料は 500 円です')
elif nenrei >= 65:
print('入場料は 600 円です')
else:
print('入場料は 1000 円です')
12以下・65以上のような「はしっこの条件」を先に片づけて、残りをelseでまとめるのがきれいな書き方です。いろいろな年齢でクリア判定を試してみてください。
自由実行スペース
思いついたことを自由に試すための場所です。学んだif文で、自分だけの「診断プログラム」を作ってみるのもおすすめです。
たとえば、この章の「真夏日プログラム」は、共通テストの紙面ではこう書かれます。
日本語になっただけで、形はPythonとそっくりだとわかるはずです。読み替えの練習は、第7章「共通テスト表記との対応」でたっぷりやります。