【Python】論理演算子not、orを複数回使う時の使い方と意味

Pythonの論理演算子ornotの応用についてです。1行に複数回使う時の方法とその意味について、まとめました。論理演算子andnotを1行に複数回使う時の方法とその意味については以下の記事をご覧ください。

演算子意味評価結果
andかつTrue and TrueTrue
orあるいはTrue or FalseTrue
not否定not TrueFalse
独学プログラマー P.34 日経BP社より

論理演算子andornotも比較演算子同様、TrueもしくはFalseを返します。詳細は基礎編の記事(リンク)をご参照ください。また、本記事では演算子notについて記載しています。演算子andorは以下の記事に記載していますので、ぜひご覧ください。

目次

論理演算子notの基本的な形

順を追って徐々に複雑なコードを見て行きたいと思います。まず始めは基本的な形から

Python
print(not 2 > 2)
print(not 2 == 2)

'''
【出力結果】
True
False

1行目

22より大きくないので、notがなければFalseが返ります。1行目ではnotがついているので、Falseの反対のTrueが返ります。

2行目

1行目同様、22と等しいので、notがなければTrueが返ります。2行目ではnotがついているので、Trueの反対のFalseが返ります。

演算子ornot(1回)が組み合わさった場合

ornotの組み合わさった場合、次のように考えると混乱せずに済むと思います。

1)notがついた式のブール値(TrueFalse)を逆に考える。(notがつく前がTrueならば、Falseに。Falseならば、Trueと読み替える)
2)orの左右の式のブール値(TrueFalse)により、全体のブール値を判断する。
(例:orの左右の式のどちらかがTrue、もしくは両方がTrueであれば、全体はTrueを返す。orの左右の式の両方がFalseであれば、全体はFalseを返す。)


では、例を見て行きましょう。

Python
print(2 > 2 or 2 != 2)
print(not 2 > 2 or 2 != 2)
print(2 > 2 or not 2 != 2)

'''
【出力結果】
False
True
True

1行目

22より大きくないので、2 > 2False22と等しいので、2 !=2Falseとなります。そのため、orの左右の式がFalseFalseになるので、1行目全体ではFalseが返ります。

2行目

1行目の2 > 2に対してnotがついています。これにより、2 > 2は本来であればFalseが返りますが、notがつくことによってFalseの反対のTrueが返ります。また、2 != 222が等しいのでFalseが返ります。よって、orの左の式がTrue、右の式がFalseなので、2行目全体としてTrueが返ります。

3行目

2 > 2は上記の通り、Falseが返ります。また、2 != 2Falseですが、notがつくことによって反対のTrueが返ります。orの左の式がFalse、右の式がTrueなので、3行目全体としてTrueが返ります。

演算子ornotが複数回(not:2回)組み合わさった場合

演算子ornotが2つついた場合も考え方は同じです。

1)notがついた式のブール値(TrueFalse)を逆に考える。(notがつく前がTrueならば、Falseに。Falseならば、Trueと読み替える。)
2)orの左右の式のブール値(TrueFalse)により、全体のブール値を判断する。

では、例を見て行きましょう

Python
print(not 3 > 2 or not 2 == 2)
print(not 3 < 2 or not 2 == 2)

'''
【出力結果】
False
True

1行目

32より大きいので、3 > 2Trueですが、notがついているのでFalseが返ります。また、22と等しいので、2 == 2Trueですが、notがついているので、Falseが返ります。そのため、orの左右の式がFalseなので、1行目全体ではFalseが返ります。

2行目

32より小さくないので、3 < 2Falseですが、notがついているのでTrueが返ります。また、22と等しいので、2 == 2Trueですが、notがついているので、Falseが返ります。そのため、orの左の式がTrue、右の式がFalseなので、2行目全体ではTrueが返ります。

演算子ornotが複数回(or:2回、not:3回)組み合わさった場合

演算子orが2回にnotが3回でてくる場合も考え方は基本的に同じです。

1)notがついた式のブール値(TrueFalse)を逆に考える。
2)orの左右の式のブール値(TrueFalse)により、全体のブール値を判断する。

以下の例で徐々にコードを複雑にしていきます。
まずはorを複数回使った形です。

例1

Python
print(3 < 2 or 2 != 2 or 3 <= 2)

'''
【出力結果】
False

32より小さくないので、3 < 2False22と等しいので、2 != 2False32以下でないので3 <=2Falseとなります。

よって全ての式がFalseなので、全体としてFalseが返ります。

続いて、例1notを1つ入れてみましょう。

例2

Python
print(not 3 < 2 or 2 != 2 or 3 <= 2)
print(3 < 2 or not 2 != 2 or 3 <= 2)
print(3 < 2 or 2 != 2 or not 3 <= 2)

'''
【出力結果】
True
True
True

例2の各行のコードはnotがなければ全てFalseが返るものでした。そこに1つnotが入ったので、どの行もどこかの比較はTrueが返ることになります。

その為、どの行も全体としてTrueが返ることになります。
論理演算子orを複数回使った時の意味と使い方は下記記事をご参照ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次