まるで英語のような条件分岐
Python で最初に覚える道具といえば、やっぱり if 文です。条件が成り立つときは片方の道を、そうでないときはもう片方の道を選ぶ。この「もし〜なら」という流れを、Python は英語そのままのような書き方で表現します。
2行で1つの判断です。if の行はコロンで終わり、その下にインデントされた行が if の 本体 ── つまり条件が真のときに実行されるコードになります。もし hour が 15 だったら、本体はまるごとスキップされて、何も表示されません。
ここで構造を作っているのはインデントです。Python は行頭の空白を見て、どの行が if に属するかを判断します。1段につき半角スペース4つが慣例なので、そこは揃えておきましょう。
else で分岐を追加する
条件が真ならこっち、そうでなければあっち、というように どちらにしても 何かをさせたい場面はよくあります。そんなときに使うのが else です。
else の行には条件を書きません。if に当てはまらなかったケースをすべて受け止めてくれます。
elif で複数の分岐を作る
3つ以上の分岐が必要なときは、if と else の間に elif("else if" の略)を重ねて書きます。
Pythonは条件を上から順にチェックしていき、最初にTrueになったブロックだけを実行します。残りはスキップされるので、この「上から順」という順番が地味に大事です。たとえばscore >= 90より先にscore >= 60を書いてしまうと、全員Dになってしまいます。最初にヒットした条件が勝つからです。
覚えておきたいきれいな書き方のコツは、ある入力に対して条件同士が重ならないようにすること、そして自分が自然に考える順序で並べることです。具体的なケースを先に、より一般的なケースを後に書くようにしましょう。
Pythonの条件分岐における真偽値(truthy / falsy)
ifに渡す式は、別にTrueやFalseそのものである必要はありません。Pythonはどんな値でも受け取って、その値の 真偽性(truthiness) を判定してくれます。
if items: は「リストに何か入っていれば」という意味で読めます。falsy(偽とみなされる値)には次のものがあります。
False0、0.0None- 空のコンテナ:
""、[]、{}、set()、()
これら以外はすべて truthy(真とみなされる値)です。真偽値の評価をうまく使うと、コードが自然に読めるようになります。ただし注意点が1つ。ゼロ自体に意味がある場合(たとえばカウンタが正当にゼロを指しているケース)は、「空 = ゼロ」という混同を避けるために、is not None や != 0 で明示的に比較しましょう。
複数条件を組み合わせる
and、or、not を使えば、python で複数条件を組み合わせた条件分岐が書けます。
チェーン比較を使うと、真ん中の値を共有する条件式を書くときに、and を明示的に書くよりすっきりまとまります。
18 <= age and age < 65 と書くのと同じ意味ですが、数学の不等式のようにスッキリ読めます。
ネストした if 文
if の中にさらに if を書くこともできます。文法的には問題なく、一番わかりやすい書き方になる場面もあります。ただし、条件分岐が読みにくくなる一番の原因もこれです。3段以上ネストしているなと感じたら、(関数を書けるようになってからは)早期 return でフラットにしたり、条件をまとめたりすることを検討してみてください。
両方とも動きます。どちらを選ぶかは、このコードを初めて読む人にとってどちらが読みやすいかで決めてください。
三項演算子(ternary expression)
条件によって値を2択で切り替えたいだけ、という場面のために、Pythonにはコンパクトな書き方が用意されています。
左から右に「70以上なら warm、そうでなければ cool」と読めばOKです。短い二択の代入にはぴったりですが、分岐が長くなったり、複数の処理を入れたくなったら使うのはやめましょう。そうなったら普通の if/else ブロックにした方がずっと読みやすくなります。
if が式になるのは三項演算子だけ
他の言語と違って、Python の if 文そのものは値を返しません。値を返すのは三項演算子の形だけです。Rust や Kotlin のように x = if ...: と書くことはできません。値を条件で切り替えたいときは三項演算子、処理を条件で切り替えたいときは通常の if ブロックを使う、と覚えておきましょう。
小さな完成サンプル
気温を分類する短いプログラムを見てみましょう。
ここで注目してほしいのは、ロジックの大部分が「advice に何を入れるか」を決めているだけ、という点です。どの気温の範囲がどのメッセージに対応するか、ぱっと見て分かりますよね。条件分岐を書くときに目指したいのはまさにこの形です。各分岐は短く、全体の意図がひと目で伝わる——これが理想です。
次のステップ
条件分岐があれば、コードは進む道を選べます。そしてループを使えば、処理を繰り返せます。次のテーマは for ループ。Python で圧倒的によく使われるループで、もう少し先で学ぶコレクションとも相性抜群のパートナーです。
よくある質問
Pythonのif文はどう書けばいい?
基本は if 条件: の後にインデントしたブロックを書くだけ。条件がTrueのときだけブロックが実行されます。複数の条件を順に判定したいときは elif(else if)を重ね、どれにも当てはまらない場合の処理は else に書きます。
Pythonにswitch文はある?
Python 3.10から match/case による構造的パターンマッチングが導入され、他言語のswitch文に相当する書き方ができるようになりました。ただ、単純な分岐であれば従来どおり if/elif を連ねる書き方でも十分実用的です。
Pythonの三項演算子の書き方は?
1行で条件分岐を書ける式で、書式は result = a if condition else b です。condition がTrueなら a、そうでなければ b が返ります。短い二択の代入には便利ですが、条件や式が長くなると読みにくくなるので使いどころには注意しましょう。