Pythonのif文・if else・elifの書き方|条件分岐の基本構文・複数条件・ネスト・三項演算子の実例
「この処理、条件によって動作を変えたい」。Pythonを学び始めたエンジニアの多くが直面する課題のひとつに、条件分岐の設計があります。なかでもif文は、最も基本的でありながら、プログラムの意思決定を司る中核的な構文です。
本記事では、if文の基本からelse・elif、論理演算子の組み合わせやネスト構造、さらには三項演算子までを体系的に解説。これら構文から派生的な記述法、そして実務への応用まで、理解を確実なものにしていきましょう。
※本記事のコードは Python 3系を前提に記述しています。
POINT
- if文は、条件が真のときに処理を実行する基本構文
- elseを使うと、条件が偽だった場合の処理も定義できる
- 複数条件の分岐にはelifを使用
- 論理演算子(and, or, not)で複雑な条件を表現可能
Contents
If文の基本構文
Pythonにおけるif文は、ある条件が成り立つ場合にのみ処理を実行するという制御を記述するための基本構文です。条件分岐を正しく設計することで、プログラムに柔軟性と知的な判断力を持たせることができます。
【基本構文】
if 条件式:
処理
たとえば、ある数値が10より大きいかどうかを判定する場合、以下のように記述します。
number = 15
if number > 10:
print("10より大きいです")
ここでのnumber > 10は条件式であり、Pythonはこの式がTrue(真)であれば、次行以降のインデント(字下げ)されたブロックを実行します。
なお、Pythonではインデントが構文の一部となっており、正しい字下げがなければ構文エラーとなるため注意してください。条件分岐は単なる記法ではなく、コードの可読性と論理的思考を体現する設計要素と捉えることが重要です。
If文で使われる比較演算子
if文の条件式では、2つの値を比較するために「比較演算子」を用います。これにより、変数の状態に応じて処理を分岐させることが可能になります。
Pythonでは、次のような代表的な比較演算子が使用されています。
| 演算子 | 意味 | 使用例 |
|---|---|---|
| == | 等しい | x == y |
| != | 等しくない | x != y |
| > | より大きい | x > y |
| < | より小さい | x < y |
| >= | 以上 | x >= y |
| <= | 以下 | x <= y |
たとえば、ある値が100以上かどうかを判断する場合、次のように記述します。
score = 100
if score >= 100:
print("満点またはそれ以上です")
このように、比較演算子は真偽値(True または False)を返し、if文の条件判定に直接利用されます。条件が複雑な場合は、複数の比較演算子や論理演算子を組み合わせて使用することで、より高度な分岐処理が可能です。
if else文の構文(条件が偽の場合)
if文は単独でも使用できますが、条件が偽である場合の処理を明示的に記述するにはelse句を組み合わせます。これにより、条件が満たされないケースにも対応でき、処理の網羅性が高まります。
基本構文は次の通りです。
if 条件式:
処理A
else:
処理B
たとえば、ユーザーの入力値に基づいてメッセージを出し分けたい場合、次のように記述できます。
age = 17
if age >= 18:
print("成人です")
else:
print("未成年です")
この例では、年齢が18歳以上であれば「成人です」と表示され、それ以外の場合は「未成年です」となります。
elseは条件式を伴わないため、if条件が偽だった場合の「その他すべて」を包括的に処理する構文です。これにより、プログラムの分岐構造を明確かつ堅牢に設計できます。
if elif else文の構文(条件が複数ある場合)
複数の条件分岐を順に評価したい場合は、ifに加えてelif(else ifの略)を用います。これにより、条件の数が増えても、簡潔かつ直線的に処理を記述できます。
構文は次のようになります。
if 条件1:
処理1
elif 条件2:
処理2
elif 条件3:
処理3
else:
その他の処理
具体例として、点数に応じて評価を出し分けるケースを見てみましょう。
score = 72
if score >= 90:
print("A評価")
elif score >= 70:
print("B評価")
elif score >= 50:
print("C評価")
else:
print("再試験")
このように、上から順に条件が評価され、最初にTrueとなったブロックが実行されます。その後の分岐はスキップされるため、意図した優先順位に従って条件を並べることが重要です。
elifは多岐にわたる状態に柔軟に対応するための基本手法であり、ユーザーの選択肢が複数存在するインタフェースや業務ロジックにおいて頻繁に使用されます。
if文で組み合わせる論理演算子
Pythonのif文では、複数の条件を組み合わせて判断を下す場面が多く存在します。その際に用いられるのが「論理演算子」です。主に以下の3つが用いられます。
- and(論理積):すべての条件が真のときにTrueを返す
- or(論理和):いずれかの条件が真であればTrueを返す
- not(否定):条件の真偽を反転させる
これらの演算子を活用することで、単一条件では記述しきれない複雑な判定処理を簡潔かつ明瞭に表現できます。
and(論理積)
複数の条件がすべて満たされたときのみ、処理を実行させたい場合に使用されます。たとえば、「20歳以上かつ日本在住」のように、複数の前提を同時に満たす必要がある場面です。
age = 22
country = "Japan"
if age >= 20 and country == "Japan":
print("成人の日本人です")
このように、andを用いた条件はすべてがTrueでなければならないため、判定の厳格性を保つ際に有効です。論理積は、入力バリデーションや業務ロジックの整合性チェックなど、システム信頼性を支える基盤にもなります。
or(論理和)
orは、いずれか一方の条件が満たされればTrueとなる演算子です。たとえば、「平日または祝日にログイン可能」といった、柔軟性をもたせた条件設計に適しています。
day = "Sunday"
if day == "Saturday" or day == "Sunday":
print("週末です")
この構文では、dayが「Saturday」または「Sunday」のいずれかに一致すれば条件が成立します。論理和は、ユーザー行動の選択肢が複数ある場合や、例外処理において冗長性を排除するのに効果的です
not(否定)
notは、条件式の真偽を反転させる論理演算子です。たとえば、「ログインしていない場合」や「エラーが発生していない場合」など、否定的な条件を明示したいときに用います。
logged_in = False
if not logged_in:
print("ログインしてください")
この例では、logged_inがFalse(未ログイン)であることを判定し、ログインを促す処理を実行します。notを用いてコードの可読性の向上、ならびに意図の明確化を図ることは、プログラムの論理構造を簡潔にする有効なアプローチです。
if文の中にif文を書く方法
プログラムにおいて条件分岐をさらに細分化したい場合、if文の中に別のif文を記述する「入れ子(ネスト)」構造を用います。これは複数段階の判定が必要な処理において、論理的に整然としたコードを記述する重要な技法です。
構文は次の通りです。
if 条件1:
if 条件2:
処理
たとえば、年齢が18歳以上で、かつ学生であるかを判定する例を見てみましょう。
age = 20
is_student = True
if age >= 18:
if is_student:
print("大学生以上の学生です")
このように、最初の条件が成り立ったときに、次の条件が評価されます。ネストされたif文は、条件の階層構造や文脈的依存関係を明確に示す手段であり、複雑なビジネスロジックを記述する際には避けて通れない要素です。
ただし、ネストが深くなりすぎると可読性が損なわれるため、条件の簡素化や関数化も併せて検討するとよいでしょう。具体的には、3重以上のネストは避けるべきです。
三項演算子の書き方(1行で記載する場合)
Pythonでは、if文による条件分岐を1行で簡潔に記述するための構文として「三項演算子(条件式)」が用意されています。これは、比較的単純な条件分岐に対してコードを読みやすく保つ有効な手法であり、特に変数への代入や出力において重宝されます。
基本構文は次のようになります。
値1 if 条件 else 値2
たとえば、ある数値が偶数か奇数かを判定して出力する場合は、次のように記述できます。
num = 7
result = "偶数" if num % 2 == 0 else "奇数"
print(result)
この構文では、num % 2 == 0が真(True)であれば「偶数」、偽(False)であれば「奇数」が変数resultに代入されます。
三項演算子は、可読性とコンパクト性の両立が求められる場面で活躍します。ただし、条件が複雑すぎる場合は逆に可読性を損なうことがあるため、簡潔な条件に限って使用するのが望ましいです。
なお、Pythonの三項演算子はJavaScriptなど他言語とは記述の順序が異なる点に注意してください。
- JavaScript:「条件 ? 真の場合 : 偽の場合」と記述
- Python:「真の場合 if 条件 else 偽の場合」という順序で記述
この違いに戸惑うことがあるため、特に他言語経験者は構文をしっかり押さえておきましょう。
if文を複数行に分割する方法
長くなりがちな条件式を読みやすく整理するために、Pythonではif文を複数行に分割できます。これは複雑なロジックを見通し良く保つためのテクニックであり、チーム開発やコードレビュー時に特に重要です。
Pythonでの複数行分割で推奨されるのは、丸括弧を使う方法です。条件式全体を()で囲むと、物理的に改行しても構文エラーになりません。
score = 85
attendance = 95
if (
score >= 80 and
attendance >= 90
):
print("優秀な成績です")
この方法はインデントが自然に揃いやすく、視認性にも優れているため、公式ドキュメントでも推奨されています。
Pythonの条件分岐を活かせる業務
ここで紹介したif文の理解は、論理的なプログラミングの基盤になるとともに、実務での判断ロジック設計そのものにつながるスキルでもあります。
実際、次のような職種において、条件分岐の知識が生きてきます。
- データアナリスト:データの値に応じた分類処理や例外制御
- 自動化エンジニア:業務ルールに基づく処理の選別ロジック
- バックエンドエンジニア:APIや業務ロジックの条件設計
- テストエンジニア:分岐条件にもとづいたテストパターンの設計
このように、Pythonのif文を使いこなす力は、システムの「設計」「検証」までを含めた幅広いスキルセットと結びついています。
スキルを活かせる仕事を見つけたい方は、「Python 条件分岐」「if文」といったスキルキーワードにも注目して、求人を精査してみてください。
- if文は、条件が真のときに処理を実行する基本構文
- 比較演算子(==, !=, >, >= など)で条件を記述
- elseを使うと、条件が偽だった場合の処理も定義できる
- 複数条件の分岐にはelifを使用
- 論理演算子(and, or, not)で複雑な条件を表現可能
- if文の中にifを書くことで、段階的な条件分岐(ネスト)が可能
- 三項演算子を使うと、簡潔に1行で条件式が書ける
- 長い条件文は、丸括弧で囲って複数行に分割すると読みやすい

