Day 2・条件分岐・ループ(判断と繰り返し)
if/elif/elseで分岐する
条件によって処理を切り替える基本形を、インデントとセットで身につける。
プログラムに「判断」をさせる
これまでのプログラムは、書いた順に上から下へ流れるだけでした。しかし現実の処理では「もし在庫があれば注文を受ける、なければ断る」のように、状況によって動きを変えたい場面がほとんどです。この「もし〜なら」を表すのが if(イフ)文です。日本語の「もし」とほぼ同じ意味だと思ってください。
age = 20
if age >= 18:
print("大人です")
else:
print("未成年です")if の後ろに条件を書き、末尾にコロン( : )を付けます。条件が成り立つ(True・真)ときは if のブロックが実行され、成り立たない(False・偽)ときは else(エルス、それ以外)のブロックが実行されます。True と False は「はい/いいえ」を表すPython専用の値で、Day1でも触れた真偽値です。
なぜコロンとインデントが必要か
Pythonは「どこからどこまでが if の中身か」を、行頭の字下げ(インデント)で判断します。コロンは「ここからブロックが始まる」という合図です。他の多くの言語が波かっこ { } で囲む役割を、Pythonでは字下げが担っています。だから字下げは見た目の問題ではなく、動作を決める文法そのものです。
3つ以上に分けたいとき: elif
条件が2択ではなく「A なら…、B なら…、それ以外なら…」と3つ以上に枝分かれするときは、elif(エルイフ、else if の短縮)を使います。elif は上から順に判定され、最初に成り立った1つだけが実行されます。
score = 72
if score >= 80:
print("合格(優)")
elif score >= 60:
print("合格")
else:
print("不合格")この例では score が 72 なので、最初の「80以上」は成り立たず、次の「60以上」で成り立ち「合格」と表示されます。ここで大事なのは順番です。もし「60以上」を先に書くと、80点でも「60以上」に先に当たってしまい「優」が表示されません。elif は上から順にふるいにかける仕組みだと覚えてください。
順番が逆で優が出ない
if score >= 60:
print("合格")
elif score >= 80:
print("合格(優)") # ここには絶対に来ない厳しい条件から順に書く
if score >= 80:
print("合格(優)")
elif score >= 60:
print("合格")よくあるつまずき
コロンの付け忘れ、字下げのズレ(半角スペースとタブの混在)、else の後ろに条件を書いてしまう、の3つが定番のエラーです。else はあくまで「それ以外の全部」なので条件は書けません。条件を付けたいなら elif を使います。
AIにはこう聞く
分岐が思った通りに動かないときは、コードを丸ごと貼って「この if 文で score=72 のとき何が表示されますか。表示されないなら理由も教えて」と聞くと、実行結果を追いながら説明してくれます。AIに直させる前に、まず自分で「どの枝に入るはずか」を予想してから答え合わせすると、読む力が育ちます。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
次のコードで score = 90 のとき、表示されるのはどれですか。 if score >= 80: print("A") elif score >= 60: print("B") else: print("C")
if 文について正しい説明はどれですか。
if / elif / else の3つが、それぞれどういうときに実行されるのかを、自分の言葉で説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。