ブール型と論理演算子 (and・or・not)

ブール型と論理演算子 (and・or・not)

ブール型 (boolオブジェクト:True, False)

 ブール型は真偽値(ブール値)とよばれる True (真) または False (偽) の 2 種類の値を返します。Type() 関数で True もしくは False のクラスを調べると bool クラスに属していることがわかります:

# PYTHON_BOOL

# In[1]

# Trueのクラスを調べる
class_true = type(True)
print(class_true)
# <class 'bool'>


# In[2]

# Falseのクラスを調べる
class_false = type(False)
print(class_false)
# <class 'bool'>

比較文の真偽判定

 ブール型は数値や文字列の比較文の真偽判定に使うことができます。

# PYTHON_BOOL_COMPARISON

# In[1]
# 等式100 == 100の真偽値
bool_1 = (100 == 100)
print(bool_1)
# True

# In[2]
# 不等式200<100の真偽値
bool_2 = (200 < 100)
print(bool_2)
# False

# In[3]
# 等式"abc"=="abc"の真偽値
bool_3 = ("abc" == "abc")
print(bool_3)
# True

# In[4]
# "abc" == "ABC" の真偽値
bool_4 = ("abc" == "ABC")
print(bool_4)
# False

 Python では大文字と小文字が区別されるので、"abc" == "ABC" は「偽」であると判定されます。

オブジェクトの真偽値

 組み込み関数 bool() は受け取ったオブジェクトが True であれば True を、それ以外には False を返します。この関数を使うとオブジェクトに対して真偽値を判定できます。たとえば、文字列や数値、リストの要素などが空であれば False を、そうでなければ True と判定されます。

# PYTHON_BOOL_OBJECT

# In[1]
# 空の文字列の真偽値
bool_1 = bool("")
print(bool_1)
# False

# In[2]
# 文字列Pythonの真偽値
bool_2 = bool("Python")
# True

# In[3]
# 空リストの真偽値
bool_3 = bool(())
print(bool_3)
# False

# In[4]
# 要素をもつリストの真偽値
bool_4 = bool(("Python","Anaconda"))
print(bool_4)
# True

数値としてのブール型

 Python での真偽値は数値として扱うことも可能です。True は 1, False は 0 です。それぞれに 0 を足してみるとわかります。

# PYTHON_BOOL_NUMERICAL

# In[1]
# ブール型の数値を確認
a = True + 0
print(a)
# 1

# In[2]
b = False + 0
print(b)
# 0

 

論理演算子(and, or, not)

 ブール型のデータ、すなわち真偽値同士で論理演算を行うことができます。
 論理演算の結果の戻り値も真偽値となります。

and(論理積)

 and は論理積とよばれ、「x and y」は「x かつ y」を意味します。この演算は x と y がともに True であるときだけ True が戻ります。他はすべて False となります。
and (論理積) の演算表

x y x and y
True True True
True False False
False True False
False False False
# PYTHON_AND

# In[1]
logical_1 = True and True
print(logical_1)
# True

# In[2]
logical_2 = True and False
print(logical_2)
# False

# In[3]
logical_3 = False and True
print(logical_3)
# False

# In[4]
logical_4 = False and False
print(logical_4)
# False

 and を使うと複数の条件式が同時に成り立っているかどうかを判定できます。

# In[5]
logical_1 = (10 == 10 and 20 == 20)
print(logical_1)
# True

# In[6]
logical_2 = (10 == 10 and 20 == 30)
print(logical_2)
# False

# In[7]
logical_3 = (10 < 20 and 20 < 40)
print(logical_3)
#True

# In[8]
logical_4 = (10 == 10 and 20 == 20 and 30 == 30)
print(logical_4)
# True

or (論理和)

 or は論理和です。「x or y」は「x または y」を意味します。x と y の少なくとも一方が True であるときは True を返します。x と y の両方が False であるときだけ False が返ります。すなわち「x or y」は「x and y」の逆の結果を返します。
 
or (論理和) の演算表

x y x or y
True True True
True False True
False True True
False False False
# PYTHON_OR

# In[1]
logical_1 = True or True
print(logical_1)
# True

# In[2]
logical_2 = True or False
print(logical_2)
# True

# In[3]
logical_3 = False or True
print(logical_3)
# True

# In[4]
logical_4 = False or False
print(logical_4)
# False

 or を使うと、複数の条件式のうち少なくとも1つが成り立っているかどうかを判定できます。

# In[5]

my_bool = (10 == 10 or 20 == 30)

print(my_bool)
# True

not (否定)

 not は論理否定演算子とよばれ、真偽値を反転させます。

# PYTHON_NOT

# In[1]
my_bool = not True
print(my_bool)
# False

# In[2]
my_bool = not (10 == 20)
print(my_bool)
# True