Pythonの論理演算子について、if文と組み合わせながら解説していきます。
論理演算子は、boolen型(True, False)を組み合わせたり、反転したりする際に使用します。
条件AとBがあるとき、次のような論理演算を行えます。
and:AかつB(両方ともTrueならTrue)or:AまたはB(片方でもTrueならTrue)not:Aの否定(TrueをFalseにして、FalseをTrueに反転する)
また、使い道がいまいちわからない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は論理積とも呼びます。
プログラムの中では、物事を0と1で考えることが多いですが、これと同じ考えで、
Trueを数字の1Falseを数字の0
とみなすと、
TrueとTrueの積 ⇒1*1 = 1⇒True⇒True and Trueの結果と一致TrueとFalseの積 ⇒1*0 =0⇒False⇒True 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は論理和とも呼びます。
プログラムの中では、物事を0と1で考えることが多いですが、これと同じ考えで、
Trueを数字の1Falseを数字の0
とみなすと、
TrueとFalseの和 ⇒1+0 = 1⇒True⇒True or Falseの結果と一致TrueとFalseの和 ⇒0+0 =0⇒False⇒False or Falseの結果と一致
orの処理は数字の和と類似していることがわかると思います。
まさに論理和ですね!
not A|Aの否定
notは、条件AのTrue、False を逆転させます。
not True⇒Falsenot False⇒True
これは条件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扱いになります。
None、False- 数値型におけるゼロ:
0,0.0, - 空のシーケンスまたはコレクション:
'',(),[],{},set(),range(0)- 参考URL:公式ドキュメント 真理値判定
この条件を否定(反転)したいときには、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 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をマスターできる動画シリーズを目指しています。
