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

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

ブール型 (bool型オブジェクト)

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

# True と False のクラスを調べます
x = type(True)
y = type(False)
print(x, y)
<class 'bool'> <class 'bool'>

比較文の真偽判定

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

# 等式 100 == 100 の真偽値
tf1 = (100 == 100)

# 不等式 200 < 100 の真偽値
tf2 = (200 < 100)

print(tf1, tf2)
True False
# 等式 "abc" == "abc" の真偽値
tf1 = ("abc" == "abc")

# 等式 "abc" == "ABC" の真偽値
tf2 = ("abc" == "ABC")

print(tf1, tf2)
True False

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

オブジェクトの真偽値

 Python ではすべてのオブジェクトに対して真偽値を判定できます。たとえば、文字列や数値、リストの要素などが空であれば False を、そうでなければ True と判定されます。

# 文字列 Python の真偽値
x = bool("Python")

# 空の文字列の真偽値
y = bool("")

print(x, y)
True False
# 要素をもつリストの真偽値
x = bool(("Python","Anaconda"))

# 要素をもたないリストの真偽値
y = bool(())

print(x, y)
True False

 

数値としてのブール型

 Python での真偽値は数値として扱うことも可能です。True は 1, False は 2 です。

# ブール型の数値を確認します

a = True + 0
b = False + 0

print(a)
print(b)
10

 

論理演算子 (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
logical_1 = True and True
logical_2 = True and False
logical_3 = False and True
logical_4 = False and False

print(logical_1)
print(logical_2)
print(logical_3)
print(logical_4)
True
False
False
False

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

# 複数の条件式が同時に成り立っているかを判定します

logical_1 = (10 == 10 and 20 == 20)
logical_2 = (10 == 10 and 20 == 30)
logical_3 = (10 < 20 and 20 < 40)
logical_4 = (10 == 10 and 20 == 20 and 30 == 30)

print(logical_1)
print(logical_2)
print(logical_3)
print(logical_4)
True
False
True
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
logical_1 = True or True
logical_2 = True or False
logical_3 = False or True
logical_4 = False or False

print(logical_1)
print(logical_2)
print(logical_3)
print(logical_4)
True
True
True
False

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

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

logical_1 = (10 == 10 or 20 == 30)
logical_2 = (10 > 20 and 20 > 30)

print(logical_1)
print(logical_2)
True
False

 

not(否定)

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

# 真偽値を反転させます
logical_1 = not True
logical_2 = not False

print(logical_1, logical_2)
False True
# 真偽値を反転させます
logical_1 = not (10 == 10)
logical_2 = not (10 == 20)

print(logical_1, logical_2)
False True