Irohabook
0
20854

Pythonの論理演算子:かつ(and)、または(or)、否定(not)

ifの条件式が二つあるときを考えてみましょう。

かつ

xが「1より大きく」かつ「5より小さい」ときに何かを処理するプログラムは次のようになります。

x = 2
if 1 < x and x < 5:
    print('xは1より大きく、5より小さい')

最初にxを2としているので、xは「1より大きい」「5より小さい」のどちらも満たします。よって

xは1より大きく、5より小さい

と表示されます。もしxに10を入れたらどうなるでしょうか?

x = 10
if 1 < x and x < 5:
    print('xは1より大きく、5より小さい')

このときは何も表示されません。二つの条件のうち「5より小さい」を満たさないからです。「1より大きい」と「5より小さい」のどちらも満たして、はじめてifの中が実行されます。

または

xが1より大きいか、または5より小さいときに何かを処理するプログラムは次のようになります。

x = 2
if 1 < x or x < 5:
    print('xは1より大きいか、または5より小さい')

orは「または」という意味です。二つの条件のうちどちらか一方でも満たされるとき、if内のプログラムは実行されます。上のプログラムでは、xに2を代入しているため、xは1より大きくifの条件は満たされます。したがって

xは1より大きいか、または5より小さい

と表示されます。ではxが100のときはどうでしょうか?

x = 100
if 1 < x or x < 5:
    print('xは1より大きいか、または5より小さい')

ifの条件のうち後半の「xは5より小さい」は満たされません。しかし前半の「xは1より大きい」は満たされます。よって

xは1より大きいか、または5より小さい

と表示されます。

否定

「〜でないとき」という条件はnotで表します。「xが5より小さくないとき」という条件を考えたいときは次のように書きます。

x = 100
if not x < 5:
    print('xは5より小さい、わけではない')

xは100であり、5より小さくないので、if内のプログラムが実行されます。つまり

xは5より小さい、わけではない

と表示されます。

目次(if)

if文の基本
比較演算子
論理演算子
if…else
if…elif

次の記事

文法(if・forなど)