初めて訪れた方は学習ガイドへ。例題の結果を予想してから実行し、値を変えて確かめ、問題の空欄を自分で書いて進めましょう。
入力したコードは再読み込みで消えます。残しておきたい内容は手元へコピーしてください。実行できないときは読み込みの対処を確認できます。
if文で「もし〜なら」の分かれ道を作るやり方- 字下げ(インデント)の大切な意味
- 比較演算子(
==!=>=など)の読み方 else・elifと、条件を組み合わせるand・or
STEP 1もし〜なら ― if文
「テストが80点以上ならほめる」のように、条件によってやることを変えるのが選択構造です。
if 条件: と書き、条件が成り立ったときだけ実行したい行を、字下げ(インデント)して書きます。行の頭の空白が「if の中身ですよ」という印になっています。(このサイトでは字下げを半角スペース2回で行います。)最初はわかりにくいですが、重要なポイントです。
条件のところでは比較演算子を使います。特に「等しい」は = ではなく == と書くことに注意してください(= は代入の記号でしたね)。
| 書き方 | 意味 | 書き方 | 意味 |
|---|---|---|---|
a == b | 等しい | a != b | 等しくない |
a > b | aが大きい | a >= b | a以上 |
a < b | aが小さい | a <= b | a以下 |
実行して、どの行が表示されるかを確かめましょう。そのあと、1行目を tenki = '雨' に変えて再実行し、字下げした行だけがスキップされることを確かめましょう。
最初のコードを読む(実行できないとき)
tenki = '晴れ'
if tenki == '晴れ':
print('せんたく日和です')
print('今日も1日がんばりましょう')確認ポイントを見る(実行してから開くこと)
'晴れ' のときは2行とも表示され、'雨' に変えると字下げした行だけが飛ばされて「今日も1日がんばりましょう」だけが表示されます。字下げされた行がif文の中身である——この感覚に早く慣れましょう!例題 1
点数によってメッセージが変わるプログラムです。score の値をいろいろ変えて実行してみましょう。
最初のコードを読む(実行できないとき)
score = 85
if score >= 80:
print('合格です!')
print('おつかれさまでした')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は必ずどちらか一方だけが実行されます。
第2章で学んだ「% 2 のあまりで偶数・奇数がわかる」を、if-elseと組み合わせた定番プログラムです。num の値を変えて、両方の道を通してみましょう。
最初のコードを読む(実行できないとき)
num = 7
if num % 2 == 0:
print('偶数です')
else:
print('奇数です')確認ポイントを見る(実行してから開くこと)
== で判定しています。この「% 2 == 0 なら偶数」は共通テストでもそのまま登場する、いちばん有名な条件式です。また、「% 2 == 1 なら奇数」もおさえておきましょう。例題 2
入力と組み合わせた例です。パスワードが合っているかを判定します。
最初のコードを読む(実行できないとき)
angou = input('あいことばを入力してください:')
if angou == 'ひらけごま':
print('正解!とびらが開きました')
else:
print('ちがうようです…')合計点が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')ねだんが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 >= 70 | aもbも70以上のとき(両方) |
day == '土' or day == '日' | dayが'土'か'日'のとき(どちらかでOK) |
kokugo や sugaku の値を70より小さくすると表示が消えることを確かめましょう。andは「両方」が条件です。
最初のコードを読む(実行できないとき)
kokugo = 75
sugaku = 82
if kokugo >= 70 and sugaku >= 70:
print('両方合格!')and は2026年の共通テストで本試・追試の両方に出た。追試では「(条件A)□(条件B)」の□に and と or のどちらを入れるかを選ばせる形式だった。「andは両方、orはどちらか」自分でプログラムを書いてみて、しっかり理解したまえ。
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が推理までしてくれています。= は代入、== は比較。この区別は共通テストでも問われる急所です。
演習問題
入力した整数が偶数か奇数かを判定するプログラムを完成させなさい。以下の実行結果を参考にしなさい。
最初のコードを読む(実行できないとき)
num = input('整数を入力してください:')
num = int(num)
# ▼ ここから下に書いてみよう解答例を見る(まず自分で書いてから開くこと)
num = input('整数を入力してください:')
num = int(num)
if num % 2 == 0:
print('あなたが入力したのは偶数です')
else:
print('あなたが入力したのは奇数です')
「たしかめてみよう」で見た % 2 == 0 を、入力と組み合わせた問題でした。
「3+5」の解を入力させ、まちがっていた場合だけ「不正解です」と表示するプログラムを作りなさい。ただし、演算子 == 以外の比較演算子を使うこと。以下の実行結果を参考にしなさい。
最初のコードを読む(実行できないとき)
num = input('3+5の解を入力してください:')
num = int(num)
# ▼ ここから下に書いてみよう解答例を見る(まず自分で書いてから開くこと)
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章「共通テスト表記との対応」でたっぷりやります。
この章の確認:理由まで説明してみよう
境界の値がどの条件に当たるかを説明できますか。
score = 60
if score >= 60:
print('A')
else:
print('B')
出力と考え方を見る
出力:A
>= は等しい場合も真です。60ちょうどなのでAが表示され、elseの中は実行されません。
条件を score > 60 に変えると、60のときはどちらを表示するでしょうか。
変更後の答えを見る
Bです。> には等しい場合を含まないため、条件が偽になります。
自分でコードを書き換えて、この章の自由実行スペースで確かめてください。出力の一致だけでなく、変数がどの順に変わったかも説明できれば次へ進みましょう。
つまずいたときの説明 / 学習の進め方 / 参考資料