Chapter 2 / Control Flow
Lesson 2.1 条件分岐
if / elif / else とインデントの基本を定着させます。
このページは無料で閲覧できるサンプルです。実際に手を動かして写経し、進捗を保存して学習を進めるには、ログインしてから学習ページへお進みください。
このレッスンで学ぶこと
このレッスンは Chapter 2 前半のまとめで、if・elif・else を組み合わせて 3 通り以上の場合分けを行う形を練習します。「条件 A、条件 B、それ以外」のような分岐は、採点 (A・B・C 評価)、料金区分 (大人・学生・子ども)、天気判定 (晴れ・曇り・雨) など、実務でも学習でも非常に多く登場します。
elif (else if の省略形) は何個でも連ねられます。Python は上から順に条件を評価し、最初に真になった枝だけを実行して、後ろの枝はスキップします。この「上から順、最初に真になったところだけ」というルールが分かっていないと、思った通りに分岐しないバグの温床になります。
写経 1
写経 1
if と else の基本形をそのまま写経します。
score = 82
if score >= 80:
print("pass")
else:
print("retry")pass写経 2
写経 2
elif を足して、条件が複数ある形へ進みます。
temperature = 18
if temperature >= 25:
print("hot")
elif temperature >= 15:
print("comfortable")
else:
print("cold")comfortable発展問題 (概要のみ)
発展問題
point が 90 以上なら "A"、70 以上なら "B"、それ以外なら "C" を表示する条件分岐を書いてみましょう。
point = 0
発展問題の自動採点はログイン後の学習ページでのみ動作します。
elif は何個でも書ける
if A: ... elif B: ... elif C: ... else: ... のように、elif は 2 個でも 5 個でも自由に増やせます。条件を細かく分けたいときに無理に if をネストせず、横方向に elif を並べて書くのが Python 流です。ネスト (if の中にさらに if) は読みづらくなりがちなので、まずは elif で書けないかを検討してから、それでも足りないときだけネストを使うようにすると、コードの見通しが良くなります。
条件の順番が結果を左右する
Python は if/elif の条件を上から順に評価し、最初に真になった枝だけを実行します。たとえば if point >= 70: ... elif point >= 90: ... と書くと、point = 95 のときも先に 70 以上の枝に入ってしまい、90 以上の枝は永遠に実行されません。条件は「範囲が狭い (厳しい) ものから順に書く」のが鉄則です。点数なら 90 → 70 → それ以外、という順番で並べると正しく動きます。
else は省略できる
「想定外のケースを拾いたい」「最後に default の値を入れたい」というときは else を書きます。一方、「想定された分岐だけが起き、それ以外は何もしなくて良い」ときは else を省略しても構いません。else を書かない場合、すべての条件が偽だと if 全体は何もせずに通り抜けます。
ネストよりも複合条件
- ネストの例 (読みづらい): if age >= 18: の中に if has_license: のように 2 段にする書き方
- 複合条件の例 (読みやすい): if age >= 18 and has_license: のように and / or で 1 つの条件にまとめる書き方
- 選び方の目安: 「両方とも満たすときだけ」なら and、「どちらかを満たすとき」なら or、「条件によって全く別の処理に分岐する」ときはネスト
手を動かして練習しましょう
ログインすると、お手本コードを 1 文字ずつ写経しながらブラウザ上で実行し、合否を確認しながら学習を進められます。進捗は自動で保存されます。