【python】bool型について(or・and・not・xor)

2020年5月17日

bool型の基本

bool型(論理型)は一般的にboolean(ブーリアン)型と呼ばれるものと同じです。
変数の型の一つで特徴として真(True)偽(False)の2つの状態しかないものです。

他のプログラミング言語では1か0かで表現されるものもあります。
他言語のである人は「真(True) = 1」 ・ 「偽(False) = 0 と考えて問題ありません。

プログラミング初心者には 2種類の状態しかない変数など何に使用するのかイメージが難しいかもしれませんが、条件判定を行うIF文やループ処理を行うwhile文に与える値として使用されます。
非常に頻繁に使用する為、bool型を理解することは重要です。

入力値として与えるときは、文字で「True」、「False」を入力します。

ソースコード

def sample1():
    a = True
    b = False
    print( "a = ", a, type(a) )
    print( "b = ", b, type(b) )

実行結果

a =  True <class 'bool'>
b =  False <class 'bool'>

or演算(論理和)について

or演算(論理和)は名前の通り、bool型(論理型)同士の足し算を行います。
普通の足し算と同じように足し合わせる変数に一つでも1(論理型としてはTrue)があると結果も1 (True) となります。
唯一異なるとすれば「1(True) + 1(True) = 1(True)」となり、上限が決まっていることです。

x or y xy
FalseFalse False
TrueTrue False
TrueFalse True
TrueTrue True

ソース上の表記では「or」を使用して演算を行います。

ソースコード

def sample2():
    a = False or False
    b = True  or False
    c = False or True
    d = True  or True

    print( a ," = False or False")
    print( b ," = True  or False")
    print( c ," = False or True")
    print( d ," = True  or True")

実行結果

False  = False or False
True  = True  or False
True  = False or True
True  = True  or True

and演算(論理積)について

and演算(論理積)は名前の通り、bool型(論理型)同士の乗算を行います。
普通の乗算と同じように掛け合わせた変数に一つでも0(論理型としてはFalse)があると結果も0 (False) となります。

x and y x y
FalseFalseFalse
FalseTrueFalse
FalseFalseTrue
TrueTrueTrue

ソース上の表記では「and」を使用して演算を行います。

ソースコード

def sample3():
    a = False and False
    b = True  and False
    c = False and True
    d = True  and True

    print( a ," = False and False")
    print( b ," = True  and False")
    print( c ," = False and True")
    print( d ," = True  and True")

実行結果

False  = False and False
False  = True  and False
False  = False and True
True  = True  and True

not演算(論理否定)について

not演算(論理否定)は真偽を反転させる計算になります。
2つ以上の変数を計算するものでなく、単一変数に対して計算します。

演算結果
True(真)False(偽)
False(偽)True(真)

ソース上の表記では「not」を使用して演算を行います。

ソースコード

def sample4():
    a = not False
    b = not True

    print( a ," = not False")
    print( b ," = not True")

実行結果

True  = not False
False  = not True

結果は反転してFalse(偽)だったものはTrue(真)となり、True(真)だったものはFlase(偽)となります。

xor演算(排他的論理和)

xor演算は同じ入力値を与えるとFalse(偽),異なる入力値を与えるとTrue(真)となります。


プログラミングを学ぶと一度は見る機会があるものですが、ほかの演算方法(and,or,not)と違って唯一python3でキーワードが設定ありません。 ビット演算子としての「^」を使用して演算します。

z xor yxy
FalseFalseFalse
TrueFalseTrue
TrueTrueFalse
FalseTrueTrue

ソース上の表記では「^」を使用して演算を行います。

def sample5():
    a = False ^ False
    b = True  ^ False
    c = False ^ True
    d = True  ^ True

    print( a ," = False ^ False")
    print( b ," = True  ^ False")
    print( c ," = False ^ True")
    print( d ," = True  ^ True")
False  = False ^ False
True  = True  ^ False
True  = False ^ True
False  = True  ^ True

3つ以上同時に計算した場合

論理演算の計算順序は前の方からです。
もちろん、括弧を使用すると優先順位は早くなります。

ソースコード

def sample6():
    t = True
    f = False

    a = f and f or  t
    b = f or  f and t
    c = f and ( f or  t )
    d = f and   t or not f
    e = f and ( t or not f )
    f = t ^   t and f 
    g = t ^ ( t and f )
    print( a ," = False and False or  True")
    print( b ," = False or  False and True")
    print( c ," = False and ( False or  True )" )
    print( d ," = False and   True or not False")
    print( e ," = False and ( True or not False")
    print( f ," = True ^   True and False ")
    print( g ," = True ^ ( True and False )")

実行結果

True  = False and False or  True
False  = False or  False and True
False  = False and ( False or  True )
True  = False and   True or not False
False  = False and ( True or not False
False  = True ^   True and False
True  = True ^ ( True and False )

ソースコードはこちらから

このページで紹介している記事のソースコードの販売を行っています。
python基本を押さえたソースコードを収録しています。
購入頂いたソースコードは商用利用OKになります。

ソースコードの販売はこちら