プログラミングにおいて、特定の条件が満たされた場合のみ処理を実行したい場面は頻繁に発生します。例えば、「在庫がある場合のみ商品をカートに入れる」や「点数が合格ラインを超えている場合のみ合格と表示する」といったケースです。
Pythonでは、このような制御を行うために if 文を使用します。
この記事では、Pythonにおける if 文の基本的な書き方と、条件分岐を制御する仕組みについて解説します。
if 文の基本構造
Pythonの if 文は、以下のような構文で記述します。
if 条件式:
# 条件式が True (真) の場合に実行される処理
# (インデントされたブロック)
重要な点は、条件式の後にコロン(:)が必要であること、そして条件が満たされたときに実行する処理は**インデント(字下げ)**して記述することです。
Shutterstock
サンプルコード:試験の合格判定
具体的な例として、試験の点数が合格ラインを超えているかどうかを判定するプログラムを作成します。
# 合格ラインと受験者の点数
passing_score = 70
student_score = 85
# 点数が合格ライン以上かどうかを判定
if student_score >= passing_score:
print("おめでとうございます。合格です。")
print(f"あなたのスコア: {student_score}")
print("判定処理を終了します。")
実行結果:
おめでとうございます。合格です。
あなたのスコア: 85
判定処理を終了します。
この例では、student_score >= passing_score(85 >= 70)という条件式が評価され、結果が True(真)となるため、インデントされたブロック内の2つの print 文が実行されます。
もし student_score が 50 だった場合は、条件式が False(偽)となり、インデントされたブロックはスキップされ、「判定処理を終了します。」のみが表示されます。
条件式とブール値
if 文の直後に記述する「条件式」は、最終的にブール値(True または False)として評価されるものであれば、どのようなものでも記述できます。
比較演算の結果を一度変数に格納し、その変数を if 文の条件として使用することも可能です。
# システムの設定状態
is_maintenance_mode = True
# ブール値の変数を直接条件として使用
if is_maintenance_mode:
print("現在メンテナンス中です。アクセスできません。")
実行結果:
現在メンテナンス中です。アクセスできません。
このように、if 文は「直後の式が True であるか」を見て、実行するかどうかを決定しています。
インデント(ブロック)の重要性
Pythonでは、if 文の影響範囲(条件が真のときに実行する範囲)をインデントによって定義します。
score = 90
if score > 80:
print("素晴らしい成績です。") # インデントあり: 条件の影響を受ける
print("次も頑張りましょう。") # インデントあり: 条件の影響を受ける
print("処理完了") # インデントなし: 条件に関係なく常に実行される
他のプログラミング言語では {} などで囲むことが多いですが、Pythonではインデントが文法上の意味を持つため、スペースの数(通常はスペース4つ)を正しく揃える必要があります。
まとめ
if 条件式:の形式で条件分岐を記述します。- 条件式が
Trueの場合のみ、直後のインデントされたブロックが実行されます。 - 比較演算子(
>=,<など)やブール値変数を条件式として使用できます。 - 処理のブロックはインデント(字下げ)によって表現されます。
