目標
「論理演算子」について理解する。
論理演算子の概要
演算子についての復習
演算子がどのようなものだったかは、次の記事で確認できます。「演算子」と「非演算子」、「演算子の種類」「演算子の優先度」などを扱っています。
論理演算子とは
論理演算子とは、ひとつ以上の条件の結果(ひとつ以上のTrue/False)の組み合わせのパターンを評価する演算子です。この組み合わせのパターンが論理演算子の演算に合っているか、そうでないかを判定します。
例えば、「条件A」、「条件B」、「条件C」の3つの条件が存在した時に、「条件Aと条件BのいずれかがTrue」や「すべての条件がFalse」などTrueとFalseの組み合わせのパターンを利用する時に用います。
論理演算子の種類
論理演算子 | 意味 | 比較できる値の数 |
x or y | xまたはy(片方、もしくは両方)がTrue → True | 2つ以上 (連続で適用できます) |
x and y | xとyが共にTrue → True | 2つ以上 (連続で適用できます) |
not x | xがTrueならFalse、FalseならTrueを返す | 1つ |
論理演算子の優先順位
論理演算子のは優先順位があり、次の通りです。この優先順位を変更したい場合は「()丸カッコ」を利用して優先したい演算を囲みます。
- not
- and
- or
論理演算子の利用
次のようにプログラムを記述して論理演算子の結果を確認します。論理演算の結果はboolean型(「True」「False」)で返されます。
シンプルな利用
print(True or True)
print(True or False)
print(False or True)
print(False or False)
print('-------------------------')
print(True and True)
print(True and False)
print(False and True)
print(False and False)
print('-------------------------')
print(not True)
print(not False)
print('-------------------------')
実行結果
「or」では、いずれかがTrueの場合はTrueが返されます。
「and」では、条件の全てがTrueの時のみTrueが返されます。
「not」では、True/Falseが反転して返されます。
「or」「and」「not」を組み合わせた利用
「or」「and」「not」には優先順位が存在していて、優先順位を変更する場合は「()丸カッコ」を利用します。
次の場合は「and」が先に評価されます。(r_n==4がFalseなので)→False
次に「or」が評価されます。(上の結果はFalseですが、l_n==3はTrueなので)→True
# left_number を l_n とします。
l_n = 3
# middle_number を m_n とします。
m_n = 4
# right_number を r_n とします。
r_n = 5
print('{} or {} and {}--------->'.format('l_n == 3', 'm_n == 4', 'r_n == 4'), l_n == 3 or m_n == 4 and r_n == 4)
実行結果
ファイルを次のように追記して実行します。
# left_number を l_n とします。
l_n = 3
# middle_number を m_n とします。
m_n = 4
# right_number を r_n とします。
r_n = 5
print('{} or {} and {}--------->'.format('l_n == 3', 'm_n == 4', 'r_n == 4'), l_n == 3 or m_n == 4 and r_n == 4)
print('{} and {} or {}--------->'.format('l_n == 3', 'm_n == 4', 'r_n == 4'), l_n == 3 and m_n == 4 or r_n == 4)
print('not ({} or {})---------------->'.format('l_n == 4', 'm_n == 4'), not(l_n == 3 or m_n == 4))
print('not ({} and {})--------------->'.format('l_n == 4', 'm_n == 4'), not(l_n == 3 and m_n == 4))
print('not {} or {} and {}------>'.format('l_n == 4', 'm_n == 4', 'r_n == 4'), not l_n == 3 or m_n == 4 and r_n == 4)
print('not {} and {} or {}------>'.format('l_n == 4', 'm_n == 4', 'r_n == 4'), not l_n == 3 and m_n == 4 or r_n == 4)
優先順位の高い方から評価されて最終的な結果は次のようになります。
実行結果
Boolean型以外の真偽値
Boolean型の「True」「False」はpythonで準備された組み込み定数(この場合はBoolean型のリテラル)です。pythonに限ったことではありませんが、プログラミング言語ではこれら「True・False」以外にも「True」として認識されるもの、「False」として認識されるものがあります。「True」として認識されるものは「False」として認識されるもの意外と考えることができます。
pythonで「False」と同じものに次のものがあげられます。
組み込み定数
「None」
数値
「0」「0.0」「0j(複素数)」
空のシーケンス
「”(空文字列)」「()(空のタプル)」「[](空のリスト)」
「range(0)(空のrangeオブジェクト)」
空のコレクション
「{} (空の辞書)」「set()(空の集合)」
今回は以上になります。この記事では論理演算子について扱いました。「False」となる値については、ここに取り上げていないものも存在します。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。