Python独学ならTech-Joho TOP > Python用語辞典 >Pythonのandとor
andとor
and や orは、TrueやFalse(真偽値)と合わせて、論理演算、ブール演算とはで使う演算子です。
主に、if文の条件を指定する場合に使います。
複数の条件が同時に成り立つ場合(and)や、いずれかしか成り立たない場合(or)を指定することができます。
例えば、「xが1より大きく3より小さい」は下のようになります。
>>> 1 < x and x < 3
別の例だと、「xが10以下、もしくは20以上」は下のようになります。
>>> x <= 10 and 20 <= x
Pythonのブール演算は少し違う
Pythonのブール演算は、他のプログラミング言語と比べると変わったところがあります。
簡単に箇条書きすると、下のようになります。
- 数学の記号のように複数条件をつなげて書くことができる。
- bool型の値(True/False)以外の値を返す
比較をつなげることができる
説明するより、下の例を見て下さい。
先程あげた、「xが1より大きく3より小さい」という例は、下のものでした。
>>> 1 < x and x < 3
これと、同じ意味の書き方がもう一つあります。
>>> 1 < x < 3
2つのxとandが消えています。
数学のように、「 1 < x < 3」は「xが1より大きく3より小さい」の意味になっています。
xに2など、適当な数字を代入して、下の黒い欄で実行してみてください。
もう一つの例、「xが10以下、もしくは20以上」は1つの書き方しかありません。
>>> x <= 10 and 20 <= 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