Pythonの論理演算子「and・or・not」の優先順位

Pythonの論理演算子には真偽を判定する優先順位があります。計算でも括弧の中から処理していくのと同じですね。

四則計算の順番なら小学校の算数ですが、論理演算の場合は高校数学Aの内容まで理解していないと難しく感じるので、今回はそんなややこしい部分を解決していこうと思います。

計算の優先順位に関しては以下の記事にまとめてあります。

関連記事

Pythonで演算子を使って計算するときに、複雑な式になればなるほど優先順位を考えないといけません。とくに括弧がたくさん入ってくるとややこしくなります。 今回はそんな計算の優先順位を表す言葉「PEMDAS」を紹介したいと思います。 […]

【Python】演算子の優先順位「PEMDAS」とは?

当ブログではPython初心者が独学で習得するためのカリキュラムを公開中!

初心者がPythonを独学で習得できたロードマップはコチラ

論理演算子3種類

  • 「not」は条件の否定
  • 「and」は「かつ」
    • すべての条件が真のときのみ全体としてTrueになる
  • 「or」は「または」
    • 条件が1つでも真であれば全体としてTrueになる
「and」の条件式結果
真 and 真True
真 and 偽False
偽 and 真False
偽 and 偽False
「or」の条件式結果
真 or 真True
真 or 偽True
偽 or 真True
偽 or 偽False
  1. 条件の真偽を判定
  2. 「not」があれば真偽を逆にする

詳しくは以下の記事でご確認ください。

優先順位

  • 括弧の中から判定
  • 「not」の判定
  • 「and」の判定
  • 「or」の判定

ルールは上の通りですが、例題で判定したほうが分かりやすいので、以下を見てください。

まず括弧の中身の「4 < 5 and 6 < 8」や「4 < 5 or 6 < 8」の真偽を判定するとTrueになります。最後にnotがついてるので逆のFalseを返しています。

上のnotがついた式は次の例と同じです。

次にもう少し複雑な例を見ていきましょう。

  1. 3 == 2 or 4 < 5 and 6 < 8
  2. 偽 or 真 and 真
    • 括弧がないので各条件の判定
  3. 偽 or 真
    • 「and」の判定「真 and 真」は真
  4. True
    • 「or」の判定「偽 or 真」は真
  1. not (3 == 2 or 4 < 5) and 6 < 8
  2. not (偽 or 真) and 真
  3. (not 真) and 真
    • 括弧の中から判定
    • 「or」の判定「偽 or 真」は真
  4. 偽 and 真
    • 「not」の判定「not 真」は偽
  5. False
    • 「and」の判定「偽 and 真」は偽

条件文はいくらでも複雑にできますが、まずはこのくらいのレベルの真偽の判定をできるようにしましょう。論理演算子の優先順位を守れば必ずできます。

まとめ

括弧の中から条件の判定を行っているのは四則計算と同じですね。ただ、真偽の判定なので難しく感じるかもしれませんが、if文やwhile文でも出てくるので必須です。

if文やwhile文は以下の記事に書いています。参考になれば幸いです。

関連記事

Pythonの条件分岐に使われるif文の基本的な書き方を紹介していきたいと思います。そもそも条件分岐とは何か?if文を書くときの注意点を見ていきましょう。 条件分岐とは 条件によって処理を分けることを条件分岐と言います。分岐の[…]

Pythonの条件分岐とは?if文・else・elifの使い方
関連記事

Pythonのループ処理に使われるfor文とwhile文の解説です。ループ処理とは何かの解説とこれらの構文の使い方や違を初心者向けに説明していきます。 ループ処理とは? ループ処理は繰り返し処理ともいわれます。名前の通り「同じ[…]

Pythonのループ処理
Pythonの演算子に関する記事たち
5
Pythonの論理演算子「and・or・not」の優先順位
最新情報をチェックしよう!