Py初めてのPython

Day 2条件分岐・ループ(判断と繰り返し)

if/elif/elseで分岐する

条件によって処理を切り替える基本形を、インデントとセットで身につける。

プログラムに「判断」をさせる

これまでのプログラムは、書いた順に上から下へ流れるだけでした。しかし現実の処理では「もし在庫があれば注文を受ける、なければ断る」のように、状況によって動きを変えたい場面がほとんどです。この「もし〜なら」を表すのが if(イフ)文です。日本語の「もし」とほぼ同じ意味だと思ってください。

PYTHON
age = 20

if age >= 18:
    print("大人です")
else:
    print("未成年です")
ifで条件を判定し、結果によって表示を変える

if の後ろに条件を書き、末尾にコロン( : )を付けます。条件が成り立つ(True・真)ときは if のブロックが実行され、成り立たない(False・偽)ときは else(エルス、それ以外)のブロックが実行されます。True と False は「はい/いいえ」を表すPython専用の値で、Day1でも触れた真偽値です。

なぜコロンとインデントが必要か

Pythonは「どこからどこまでが if の中身か」を、行頭の字下げ(インデント)で判断します。コロンは「ここからブロックが始まる」という合図です。他の多くの言語が波かっこ { } で囲む役割を、Pythonでは字下げが担っています。だから字下げは見た目の問題ではなく、動作を決める文法そのものです。

3つ以上に分けたいとき: elif

条件が2択ではなく「A なら…、B なら…、それ以外なら…」と3つ以上に枝分かれするときは、elif(エルイフ、else if の短縮)を使います。elif は上から順に判定され、最初に成り立った1つだけが実行されます。

PYTHON
score = 72

if score >= 80:
    print("合格(優)")
elif score >= 60:
    print("合格")
else:
    print("不合格")
elifで3段階に分岐。上から順に判定され、最初に当たった枝だけ動く

この例では score が 72 なので、最初の「80以上」は成り立たず、次の「60以上」で成り立ち「合格」と表示されます。ここで大事なのは順番です。もし「60以上」を先に書くと、80点でも「60以上」に先に当たってしまい「優」が表示されません。elif は上から順にふるいにかける仕組みだと覚えてください。

順番が逆で優が出ない

PYTHON
if score >= 60:
    print("合格")
elif score >= 80:
    print("合格(優)")  # ここには絶対に来ない

厳しい条件から順に書く

PYTHON
if score >= 80:
    print("合格(優)")
elif score >= 60:
    print("合格")

よくあるつまずき

コロンの付け忘れ、字下げのズレ(半角スペースとタブの混在)、else の後ろに条件を書いてしまう、の3つが定番のエラーです。else はあくまで「それ以外の全部」なので条件は書けません。条件を付けたいなら elif を使います。

AIにはこう聞く

分岐が思った通りに動かないときは、コードを丸ごと貼って「この if 文で score=72 のとき何が表示されますか。表示されないなら理由も教えて」と聞くと、実行結果を追いながら説明してくれます。AIに直させる前に、まず自分で「どの枝に入るはずか」を予想してから答え合わせすると、読む力が育ちます。

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

次のコードで score = 90 のとき、表示されるのはどれですか。 if score >= 80: print("A") elif score >= 60: print("B") else: print("C")

Q2

if 文について正しい説明はどれですか。

Q3

if / elif / else の3つが、それぞれどういうときに実行されるのかを、自分の言葉で説明してください。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。