Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの論理演算子とは?and・or・notの使い方を実例付きで解説

条件分岐を扱うプログラミングでは、1つの条件文の中で複数の比較を行いたい場面がよくあります。たとえば、「2つの式がどちらもTrueかどうか」や「2つのうち少なくとも1つがFalseかどうか」を確認したいケースです。

そんなときに役立つのが、Pythonの論理演算子です。論理演算子を使うと、1つの条件文の中で複数の論理比較を組み合わせることができます。

この記事では、演算子の基本をおさらいしたうえで、Pythonが提供する3つの論理演算子の使い方を具体例とともにわかりやすく解説します。

Pythonにおける演算子の種類

演算子とは、Pythonで特定の操作を表す記号のことです。たとえば、マイナス記号(-)は減算を意味します。

Pythonには主に3種類の演算子があります。

  • 算術演算子:プログラム内で数学的な計算を行うための演算子
  • 比較演算子:値同士を比較し、結果としてTrueまたはFalseを返す演算子
  • 論理演算子:複数の条件文を組み合わせるための演算子

このうち、比較演算子と論理演算子は、プログラムの流れ(フロー)を細かく制御するために使われます。たとえば、比較演算子である条件がTrueかどうかを判定し、その結果に応じて特定のコードブロックを実行する、といった処理が可能になります。

これらの演算子はif文と組み合わせて使われることが多いです。たとえば、オンラインショッピングサイトで「ユーザーが16歳以上かどうか」を確認したい場合、次のようなコードを書けます。

age = 17

if age >= 16:
	print("ユーザーは16歳以上です!")
else:
	print("ユーザーは16歳未満です!")

このコードを実行すると、「ユーザーは16歳以上です!」と表示されます。

このプログラムでは、比較演算子を使って、変数age(ここでは17)が16以上かどうかを判定しています。17は16より大きいため、条件式はTrueと評価され、User is 16 or over!というメッセージがコンソールに出力されます。

しかし、if文の中で複数の比較を行いたい場合はどうすればよいのでしょうか。そこで登場するのが論理演算子です。

Pythonの3つの論理演算子

Pythonには、値を比較するための論理演算子が3つ用意されています。

論理演算子は式をブール値(Boolean)として評価し、その結果に応じてTrueまたはFalseを返します。Pythonの論理演算子は以下の通りです。

演算子名説明
and両方の式がTrueの場合にTrueを返すa and b
or少なくとも1つの式がTrueの場合にTrueを返すa or b
not式がFalseの場合にのみTrueを返すnot a

論理演算子は通常、「2つ以上の式がある特定の結果になるかどうか」を評価するために使われます。それでは、具体的な例を見ながら、それぞれの論理演算子の動作を確認していきましょう。先ほどのオンラインショッピングサイトの例に戻ります。

and演算子の使い方

and演算子は、指定されたすべての式がTrueの場合にTrueと評価されます。

オンラインショッピングサイトを開発しているとしましょう。サイトでは「ユーザーが16歳以上であること」と「アカウントが正常な状態(good standing)であること」の両方を確認したいとします。その場合、次のようなコードが使えます。

age = 17
good_standing = True

if (age >= 16) and (good_standing == True):
	print("このユーザーのアカウントは購入できます。")
else:
	print("このユーザーのアカウントは購入できません。")

このコードを実行すると、「このユーザーのアカウントは購入できます。」と表示されます。

このコードでは、and演算子を使って「ユーザーが16歳以上かどうか」と「アカウントが正常な状態かどうか」の両方を評価しています。まずage >= 16が評価され、次にgood_standing == Trueが評価されます。両方の条件がTrueであるため、if文の中身が実行されました。

もし片方でもFalseだった場合——たとえばユーザーが16歳未満だったり、アカウント状態が正常でなかったりした場合——は、else文の中身が実行されることになります。

or演算子の使い方

or演算子は、少なくとも1つの式がTrueであればTrueと評価されます。

たとえば、「ロイヤルティプランに登録している買い物客全員に5%の割引を適用する」かつ「65歳以上の購入者にも割引を適用する」という仕様を考えます。この場合、次のようなプログラムが書けます。

loyalty_plan = False
age = 67

if (loyalty_plan == True) or (age >= 65):
	discount = 5
else:
	discount = 0

print("買い物客の割引率:", discount)

このコードを実行すると、「買い物客の割引率:5」と表示されます。

この例では、まずloyalty_planがTrueかどうか、そしてageが65以上かどうかが評価されます。loyalty_planはTrueではないため最初の条件はFalseですが、年齢は65より大きいため2番目の条件はTrueです。

or演算子を使っている場合、どちらか一方の条件がTrueであればよいので、if文の中身が実行されました。もしユーザーがロイヤルティプランに未登録で、かつ65歳未満であれば、else文の中身が実行されていたでしょう。

この結果、ユーザーには5%の割引が適用され、「Shopper discount:」というメッセージの後に割引率が出力されました。

not演算子の使い方

not演算子は、式がFalseの場合にのみTrueと評価されます。

たとえば、割引は1回限りで、すでに割引を使って購入したことのある顧客には再度割引を適用したくないとします。その場合、次のようなコードが使えます。

used_discount = True

if not(used_discount == True):
	print("このユーザーはまだ割引を使用していません。")
else:
	print("このユーザーはすでに割引を使用済みです。")

このコードを実行すると、「このユーザーはまだ割引を使用していません。」と表示されます。

このコードでは、not演算子を使って、used_discount == Trueという式がFalseになるかどうかを評価しています。ここでは元の式がTrueと評価されるため、not演算子の結果はFalseとなり、elseブロックのコードが実行されました。

もしユーザーがまだ割引を使用していなければ、used_discount == TrueはFalseと評価され、not演算子の結果はTrueとなるため、if文の中身が実行されることになります。

まとめ

論理演算子を使うことで、プログラムの流れを柔軟に制御できるようになります。

and演算子は「2つの式がどちらもTrueかどうか」、or演算子は「複数の式のうち1つでもTrueかどうか」、そしてnot演算子は「式がFalseかどうか」をそれぞれチェックできます。

この記事で紹介したサンプルコードを参考にすれば、初心者の方でも自信を持ってPythonコードの中で論理演算子を使いこなせるようになるでしょう。

  1. Pythonにおける比較演算子の連鎖(チェーン)の使い方を徹底解説

    プログラミングをしていると、1つの条件式の中で複数の条件を同時にチェックしたい場面がよくあります。例えば「x < y < z」のような数学的な記法を使いたい場合や、「x < y かつ x < z」といった形で条件を組み合わせたい場合などです。 他の多くの言語と同様に、Pythonにも基本的な比較演算子が用意されています。具体的には、<、<=、>、>=、==、!=、is、is not、in、not in の各演算子です。 これらの比較演算子はすべて同じ優先順位を持っており、その優先順位は算術演算子・ビット演算子・シフト演算子よりも低く設定されて

  2. Pythonの基本演算子一覧|7種類の演算子の使い方を徹底解説

    Pythonには、値や変数に対してさまざまな処理を行うための「演算子」が多数用意されています。演算子はその役割によって、算術演算子・比較(関係)演算子・論理演算子・ビット演算子・代入演算子・同一性演算子・メンバーシップ演算子の7種類に分類されます。この記事では、それぞれの種類ごとに使い方をわかりやすく解説します。 1. 算術演算子 数値の計算に使用する最も基本的な演算子です。 +:加算(足し算) -:減算(引き算) *:乗算(掛け算) /:除算(割り算)。結果は常に浮動小数点数になる //:切り捨て除算。小数点以下を切り捨てた結果を返す %:剰余(割り算の余り) a = 10 b = 3