YutaKa Notebook | Enjoy Python!

Python の文法やモジュール、Python関連のAPIについて画像・ソースコード付きで徹底解説!

【解説動画あり】python if not, and, or 論理演算子の使い方|Python超入門シリーズ【第16回】

Pythonの論理演算子について、if文と組み合わせながら解説していきます。

論理演算子は、boolen型True, False)を組み合わせたり、反転したりする際に使用します。

条件AとBがあるとき、次のような論理演算を行えます。

  • and:AかつB(両方ともTrueならTrue
  • or :AまたはB(片方でもTrueならTrue
  • not:Aの否定(TrueFalseにして、FalseTrueに反転する)

また、使い道がいまいちわからないnotの使いどころについても実例を紹介します。

 

【解説動画】not, and, or 論理演算子の使い方


5min. Python解説動画【入門編】|第16回:論理演算子 and/or/not徹底解説!

▲目次へ戻る

and|AかつB

andは、2つの条件AとBが共にTrueであるときに、Trueを返します。

condition_a = True
condition_b = True
 
if condition_a and condition_b:
  print("2つの条件共に満たされています")
 
else:
  print("どちからが満たされていません")
 
# 2つの条件共に満たされています

どちらか一方でもFalseだと、andの出力はFalseになります。

condition_a = True
condition_b = False
 
if condition_a and condition_b:
  print("2つの条件共に満たされています")
 
else:
  print("どちらかが満たされていません")
 
# どちらかが満たされていません

またand論理積とも呼びます。

プログラムの中では、物事を01で考えることが多いですが、これと同じ考えで、

  • Trueを数字の1
  • Falseを数字の0

とみなすと、

  • TrueTrueの積 ⇒ 1*1 = 1TrueTrue and Trueの結果と一致
  • TrueFalseの積 ⇒ 1*0 =0FalseTrue and Falseの結果と一致

andの処理は数字の積と類似していることがわかります。

まさに論理積ですね!

or|AまたはB

orは、2つの条件AとBのうち少なくとも片方がTrueであれば、Trueを返します。

condition_a = True
condition_b = False
 
if condition_a or condition_b:
  print("2つの条件どちらか、または両方が満たされています")
 
else:
  print("どちらも満たされていません")
 
# 2つの条件どちらか、または両方が満たされています

もちろん両方ともTrueでもTrueを返します。

両方ともFalseだと、orの出力はFalseになります。

condition_a = False
condition_b = False
 
if condition_a or condition_b:
  print("2つの条件どちらか、または両方が満たされています")
 
else:
  print("どちらも満たされていません")
 
# どちらも満たされていません

or論理和とも呼びます。

プログラムの中では、物事を01で考えることが多いですが、これと同じ考えで、

  • Trueを数字の1
  • Falseを数字の0

とみなすと、

  • TrueFalseの和 ⇒ 1+0 = 1TrueTrue or Falseの結果と一致
  • TrueFalseの和 ⇒ 0+0 =0FalseFalse or Falseの結果と一致

orの処理は数字の和と類似していることがわかると思います。

まさに論理和ですね!

not A|Aの否定

notは、条件AのTrueFalse を逆転させます。

  • not TrueFalse
  • not FalseTrue

これは条件Aの否定とも呼びます。

condition_a = False
 
if not condition_a:
  print("条件AはFalseなので、")
  print("not 条件AはTrue")
 
else:
  print("条件AはTrueなので、")
  print("not 条件AはFalse")
 
# 条件AはFalseなので、
# not 条件AはTrue

判定式を用いた例も見ていきましょう。

name = "Takao"
 
if not name == "YutaKa":
  print("あなたはYutaKaではありません")
 
else:
  print("あなたはYutaKです")
 
# あなたはYutaKaではありません

notを用いると、確かに条件を反転(否定)することができました。

ただ、疑問が残ります。

わざわざnotを使用しなくても、判定式自体を書き換えれば良いのではないでしょうか?

例えば、この例であれば、==ではなくて、!=を使用すればnotは不要ですね。

name = "Takao"
  
if name != "YutaKa":
  print("あなたはYutaKaではありません")
else:
  print("あなたはYutaKです")
 
# あなたはYutaKaではありません

わざわざnotを使用するより、判定式を書き換えた方が見やすい気さえします。

しかし、実は判定式を反転させられない状況というものがあります。

そんなときのためのnotです。

notの使いどころ|if文で判定式を使用しないとき

実はif文では、ifの後ろに以下のオブジェクトを直接書き込んでも、False扱いになります。

この条件を否定(反転)したいときには、notを使わざるを得ません。

例えば、リストが空のときだけデフォルト値を追加したいときは次のように書きます。

my_list = []
 
if not my_list:
  print("リストが空です")
  print("デフォルト値の1を追加しておきます")
  my_list.append(1)
 
# リストが空です
# デフォルト値の1を追加しておきます
 
print(my_list)
# [1]

こういった状況でnotが役立ちます。

notの使いどころ|辞書型に特定のkeyがないときに処理

辞書型に特定のkeyがあるかどうか調べるためには、inを使用します。

これとは逆に、辞書型に特定のkeyがないことを確認したい場合には、not inを使用します。

  • not key in 辞書型変数

keyがない場合には、デフォルト値を追加したいときは次のように書きます。

my_dict = {"age":30}
 
if not "name" in my_dict:
  print("nameが設定されていません")
  print("デフォルト値のYutaKa Taroを追加しておきます")
  my_dict["name"] = "YutaKa Taro"
 
# nameが設定されていません
# デフォルト値のYutaKa Taroを追加しておきます
 
print(my_dict)
# {'age': 30, 'name': 'YutaKa Taro'}

おわりに

今回は論理演算子and, or, notについて紹介しました。

if文と組み合わせることで、作成できるプログラムの幅が一気に広がりましたね!

今回のnotの使い道のようなちょっとした情報にも触れています。

知的好奇心を刺激して、楽しみながらpythonを学んでいただける動画シリーズを目指いしています。

5min. python解説動画では、pythonの基本をショートクリップで解説しています!

流し見するだけでpythonをマスターできる動画シリーズを目指しています。