【Python初心者向け】or演算子の使い方を実例で解説!条件分岐で複数条件をスマートに書こう
こんにちは、とまだです。
Pythonでif文を書いているときに、「複数の条件のうち、どれか1つでも当てはまったら処理したい」と思ったことはありませんか?
私も最初の頃は、同じような条件をif文で何度も書いて、「なんだかコードが長くて読みづらいな...」と感じていました。そんなときに出会ったのが or演算子 です。
今回は、Pythonの or演算子 の使い方を、実際のコード例とともにわかりやすく解説します!
or演算子ってなに?
or演算子を簡単に説明すると、「複数の条件のうち、どれか1つでも満たされればOK」という判定をしてくれる演算子です。
例えば、コンビニで買い物をするときを想像してみてください。 「現金でもクレジットカードでも電子マネーでも、どれか1つあれば支払いできる」という状況がありますよね。
or演算子も同じで、複数の条件のうち、どれか1つでも True なら全体が True になります。
基本的な書き方
条件1 or 条件2
この場合、条件1と条件2のどちらか(または両方)が True なら、結果は True になります。 両方とも False の場合だけ、結果が False になります。
実際に使ってみよう
まずは簡単な例から見てみましょう。
user_input = "yes"
if user_input == "yes" or user_input == "y":
print("処理を続行します")
else:
print("処理を中断します")
このコードでは、ユーザーが「yes」または「y」のどちらを入力しても、同じ処理が実行されます。
いちいち別々のif文を書く必要がないので、コードがスッキリしますね!
よくある使用例:ユーザー入力の判定
実際の開発では、ユーザーが入力する値のバリエーションを考慮する必要があります。
answer = input("続行しますか?(yes/y/1): ")
if answer == "yes" or answer == "y" or answer == "1":
print("処理を開始します")
elif answer == "no" or answer == "n" or answer == "0":
print("処理を中止します")
else:
print("無効な入力です")
このように、似たような意味の入力をまとめて判定できるのがor演算子の便利なところです。
デフォルト値の設定にも使える
or演算子には、もう1つ便利な使い方があります。それが デフォルト値の設定 です。
username = ""
display_name = username or "ゲスト"
print(display_name) # "ゲスト" と表示される
username
が空文字列の場合、username or "ゲスト"
は "ゲスト"
を返します。
これは、Pythonでは空文字列が「偽(False)」として扱われるためです。
どんな値が「偽」になるの?
Pythonでは以下の値が False(偽)として扱われます。
print(bool(None)) # False
print(bool(False)) # False
print(bool(0)) # False
print(bool("")) # False(空文字列)
print(bool([])) # False(空リスト)
print(bool({})) # False(空辞書)
これらの特性を利用すると、以下のような書き方ができます。
def greet(name):
display_name = name or "名無しさん"
print(f"こんにちは、{display_name}さん!")
greet("") # "こんにちは、名無しさんさん!"
greet("田中") # "こんにちは、田中さん!"
greet(None) # "こんにちは、名無しさんさん!"
とても便利ですよね!
よくある間違いと注意点
or演算子を使うときに、初心者の方がよくやってしまう間違いがあります。
間違い1:条件式を省略してしまう
# ❌ 間違った書き方
color = "red"
if color == "red" or "blue" or "green":
print("指定の色です")
この書き方だと、color
がどんな値でも常に True になってしまいます。
なぜなら、"blue"
や "green"
は空でない文字列なので、Pythonでは True として扱われるからです。
# ✅ 正しい書き方
color = "red"
if color == "red" or color == "blue" or color == "green":
print("指定の色です")
それぞれの条件をきちんと書くことが大切です。
より良い書き方:in演算子を使う
条件が多くなる場合は、in
演算子を使った方がスッキリします。
color = "red"
if color in ["red", "blue", "green"]:
print("指定の色です")
ただし、or演算子の仕組みを理解しておくことは大切なので、まずはor演算子に慣れましょう。
間違い2:複雑な条件での優先順位
flag1 = True
flag2 = False
flag3 = True
# この条件はどう解釈される?
if flag1 and flag2 or flag3:
print("True です")
Pythonでは、and
の方が or
より優先順位が高いので、この条件は以下のように解釈されます。
if (flag1 and flag2) or flag3:
print("True です")
優先順位が曖昧な場合は、カッコを使って明確にしましょう。
# 意図を明確にした書き方
if (flag1 and flag2) or flag3:
print("True です")
# または
if flag1 and (flag2 or flag3):
print("True です")
実践的な使用例
最後に、実際の開発でよく使われるパターンを見てみましょう。
例1:ファイルの拡張子チェック
def is_image_file(filename):
return (filename.endswith('.jpg') or
filename.endswith('.png') or
filename.endswith('.gif'))
print(is_image_file('photo.jpg')) # True
print(is_image_file('document.pdf')) # False
例2:権限チェック
def can_edit(user_role):
return user_role == "admin" or user_role == "editor"
user = {"role": "editor"}
if can_edit(user["role"]):
print("編集権限があります")
else:
print("編集権限がありません")
例3:数値の範囲チェック
age = 25
if age < 18 or age > 65:
print("対象年齢外です")
else:
print("対象年齢内です")
この例では、18歳未満または65歳超過の場合を「対象外」としています。
短絡評価(ショートサーキット)について
or演算子には 短絡評価 という特性があります。
簡単に言うと、「左側の条件が True なら、右側の条件は評価しない」という仕組みです。
def check_condition():
print("右側の条件が評価されました")
return True
# 左側が True なので、右側は評価されない
result = True or check_condition()
print(result) # True(ただし、"右側の条件が評価されました"は出力されない)
この特性を利用すると、効率的なコードが書けることがあります。
def safe_divide(a, b):
# b が 0 でない場合のみ割り算を実行
return b != 0 and a / b
print(safe_divide(10, 2)) # 5.0
print(safe_divide(10, 0)) # False(エラーにならない)
まとめ
or演算子は、複数の条件を簡潔にまとめたり、デフォルト値を設定したりするのに便利な機能です。
重要なポイント
複数の条件のうち、どれか1つでも True なら全体が True になります。
デフォルト値の設定に使えて、値 or "デフォルト"
の形で書けます。
条件式を省略せず、それぞれきちんと書くことが大切です。
複雑な条件では、カッコを使って優先順位を明確にしましょう。
最初は単純なif文での条件分岐から始めて、慣れてきたらデフォルト値の設定や短絡評価の活用にも挑戦してみてください。
or演算子をマスターすれば、きっとPythonコードがもっとスッキリと読みやすくなりますよ!