Pythonでプログラムの流れを制御する条件分岐は、身近な分岐をイメージすると理解しやすくなります。例えば「もし雨が降ったら傘を持つ」「それ以外は帽子をかぶる」といった日常的な判断をコードに落とし込む操作です。ここでは、Pythonにおける条件分岐の基本を、初心者にもわかりやすく解説していきます。章ごとに具体例を示しながら丁寧に解説していくので、一つずつステップアップしましょう!
条件分岐の基本:if文、elif文、else文
Pythonの条件分岐はif
文から始まります。if
の後に続く条件がTrue
であれば、そのブロック内の処理が実行されます。条件がFalse
の場合は、続くelif
(else ifの略)やelse
でさらに分岐を記述できます。
temperature = 25
if temperature >= 30:
print("今日は暑いです")
elif temperature >= 20:
print("快適な気温です")
else:
print("少し涼しいです")
# 「快適な気温です」が表示されます
この例では、変数temperature
の値に応じて3つのパターンを出力しています。インデント(字下げ)を一つずらすことで、条件と処理の対応が明確になります。
関係演算子で数値を比較する
Pythonの関係演算子は主に以下の6種類があります。関係演算子は値同士を比較して真偽(True
/False
)を返します。
演算子 | 意味 | 例 |
---|---|---|
== | 等しい | a == b |
!= | 等しくない | a != b |
< | より小さい | a < b |
<= | 以下 | a <= b |
> | より大きい | a > b |
>= | 以上 | a >= b |
これらを使うことで、「3は5より小さい」「10は10と等しい」といった条件をコードで表現できます。文字列同士の比較にも同様の演算子を使うことが可能です。
論理演算子で複数の条件を組み合わせる
関係演算子だけでは足りない場面に登場するのが論理演算子です。Pythonの論理演算子は、and
、or
、not
の3つがあります。
and
: 左右の両方がTrue
ならTrue
or
: 左右どちらかがTrue
ならTrue
not
: 真偽を反転させる
age = 18
has_ticket = True
if age >= 18 and has_ticket:
print("入場できます")
else:
print("入場できません")
# 「入場できます」が表示されます
この例では「年齢が18以上かつチケットを持っている」場合のみ入場できると判定します。複数条件を組み合わせると、より細かい制御が可能になります。
三項演算子(条件式)でシンプルに書く
PythonにはC言語風の三項演算子(条件) if 条件 else (偽の場合)
も用意されています。一行で条件分岐の結果を変数に代入したいときに便利です。
score = 80
result = "合格" if score >= 60 else "不合格"
print(result)
# 「合格」が表示されます
このコードはscore
が60以上ならresult
に"合格"
を、それ以外なら"不合格"
を代入します。短く書ける反面、条件が複雑すぎると可読性が落ちるので注意してください。
ネスト(入れ子)した条件分岐と可読性の工夫
場合によっては、条件分岐をネスト(入れ子)する必要があります。しかし、深いネストは読みにくくなり可読性が下がるので注意しましょう。関数化や早期リターン(return
)を使ってコードをシンプルに保つ工夫が大切です。
def assess(score, has_certificate):
if score < 0 or score > 100:
return "スコア不正"
if score >= 80:
return "優秀"
if has_certificate:
return "資格あり"
return "一般"
print(assess(85, False))
# 「優秀」が表示されます
このように関数でひとまとめにして順序立てると、ブロックが浅くなりロジックが追いやすくなるのでおすすめです。
実践例:商品割引システム
最後に、これまでの知識を使った簡単な処理の例を見てみましょう。この処理は、商品価格と会員ステータスから割引価格を計算します。
def calculate_price(price, is_member):
# 基本割引
discount = 0.1 if is_member else 0.0
# 追加割引
if price > 10000:
discount += 0.05
# 割引後価格
final_price = price * (1 - discount)
return round(final_price, 2)
print(calculate_price(15000, True)) # 会員かつ高額購入
# 15%割引いた最終価格が表示されます
この例では、会員なら10%割引、1万円超えの高額購入なら5%割引を適用して最終価格を返しています。三項演算子とif
の組み合わせでシンプルに書けていて可読性が高いです。
まとめ
Pythonの条件分岐は、プログラムに必須の制御構造です。関係演算子で基本的な比較を行い、論理演算子で複数条件を組み合わせ、三項演算子で短い条件代入を実現できます。
ネストが深くなりすぎないよう注意しつつ、関数化や早期リターンを活用して可読性を保ちましょう。
ぜひ実際に手を動かしてサンプルコードを試し、条件分岐の仕組みを自分のものにしてください!