Tech-Joho.info

Pythonのandとor

Python独学ならTech-Joho TOP > Python用語辞典 >Pythonのandとor

andとor

and や orは、TrueやFalse(真偽値)と合わせて、論理演算、ブール演算とはで使う演算子です。
主に、if文の条件を指定する場合に使います。
複数の条件が同時に成り立つ場合(and)や、いずれかしか成り立たない場合(or)を指定することができます。

例えば、「xが1より大きく3より小さい」は下のようになります。

>>> 1 

別の例だと、「xが10以下、もしくは20以上」は下のようになります。

>>> x 

Pythonのブール演算は少し違う

Pythonのブール演算は、他のプログラミング言語と比べると変わったところがあります。

簡単に箇条書きすると、下のようになります。

  • 数学の記号のように複数条件をつなげて書くことができる。
  • bool型の値(True/False)以外の値を返す

比較をつなげることができる

参考
Python3の公式リファレンス6.10. 比較

説明するより、下の例を見て下さい。

先程あげた、「xが1より大きく3より小さい」という例は、下のものでした。

>>> 1 

これと、同じ意味の書き方がもう一つあります。

>>> 1 

2つのxとandが消えています。
数学のように、「 1 >>> x

bool型以外の値を返す

参考
Python3の公式リファレンス 6.11. ブール演算 (boolean operation)

これは上の内容をそのまま転記します。

式 x and y は、まず x を評価します; x が偽なら x の値を返します; それ以外の場合には、 y の値を評価し、その結果を返します。

式 x or y は、まず x を評価します; x が真なら x の値を返します; それ以外の場合には、 y の値を評価し、その結果を返します。

例を上げて説明しましょう。
「10 or False」がどのように計算され、どのような値を返すか考えてみます。
まず、左の10は、真偽値を判定すると、真になります。
orは、その左の値が真なら左の値を返します。
つまり、この時点で、10は真なので、10が返ることになります。
orの右にあるFalseは、真偽が判定されることもありません。

>>> 10 or False
10

次に、「-1 and 10 > 2」がどのように計算され、どのような値を返すか考えてみます。
まず、左の-1は、真偽値を判定すると、偽になります。
andは、その左の値が偽なら左の値を返します。
つまり、この時点で、-1は偽なので、-1が返ることになります。
abdの右にある10 > 2は、真偽が判定されることもありません。

>>> -1 and 10 > 2
0