05-Python

Python(Part.12)| python【論理演算子】

python| まとめ | 現役エンジニア&プログラミングスクール講師「python」のまとめページです。pythonに関して抑えておきたい知識や文法やにについて記事をまとめています。まとめページの下部には「おすすめの学習書籍」「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中...

目標

「論理演算子」について理解する。

論理演算子の概要

演算子についての復習

演算子がどのようなものだったかは、次の記事で確認できます。「演算子」と「非演算子」、「演算子の種類」「演算子の優先度」などを扱っています。

Python(Part.3)| python【算術演算子】pythonの基礎として演算子について扱っています。「演算子」「被演算子」「演算子の優先度」優先度による演算の順番の変化を確認しています。...

論理演算子とは

論理演算子とは、ひとつ以上の条件の結果(ひとつ以上のTrue/False)の組み合わせのパターンを評価する演算子です。この組み合わせのパターンが論理演算子の演算に合っているか、そうでないかを判定します。

例えば、「条件A」、「条件B」、「条件C」の3つの条件が存在した時に、「条件Aと条件BのいずれかがTrue」や「すべての条件がFalse」などTrueとFalseの組み合わせのパターンを利用する時に用います。

イメージが付かない場合は下の利用例で内容を確認して頂くのが良いです。

論理演算子の種類

論理演算子意味比較できる値の数
x or yxまたはy(片方、もしくは両方)がTrue → True2つ以上
(連続で適用できます)
x and yxとyが共にTrue → True2つ以上
(連続で適用できます)
not xxがTrueならFalse、FalseならTrueを返す1つ

論理演算子の優先順位

論理演算子のは優先順位があり、次の通りです。この優先順位を変更したい場合は「()丸カッコ」を利用して優先したい演算を囲みます。

  1. not
  2. and
  3. 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」

「False」は組み込み定数なのでジャンルとしてはこの部類です。

数値
「0」「0.0」「0j(複素数)」

数学の複素数では「i」が利用されますが、pythonでは「j」を利用します。

空のシーケンス
「”(空文字列)」「()(空のタプル)」「[](空のリスト)」
「range(0)(空のrangeオブジェクト)」

空のコレクション
「{} (空の辞書)」「set()(空の集合)」

このほかにも、カスタムクラス(自作クラス)では__len__メソッドがある場合、その戻り値が「0」のものも「False」として扱われます。__len__メソッドはシーケンスの長さを返すメソッドです。
class Sample:
def __len__(self):
return 0

今回は以上になります。この記事では論理演算子について扱いました。「False」となる値については、ここに取り上げていないものも存在します。

「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師「python」の学習でお勧めしたい書籍をご紹介しています。お勧めする理由としては、考え方、イメージなどを適切に捉えていること、「生のpython」に焦点をあてて解説をしている書籍であることなどが理由です。勿論、この他にも良い書籍はありますが、特に質の高かったものを選んで記事にしています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
05-Python

Python(Part.26)| python【選択構造(match文)(1)】|  [Selection Structure] (match statement)(1)

2024年7月9日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site