Python 条件分岐 #4

株式会社リュディアです。引き続き Python の条件分岐についてまとめていきます。前回までの条件分岐のまとめへのリンクは以下を参考にしてください。

今回は複数の条件を記述する方法です。and, or  演算子を使います。

以下の例を見てください。

a = 2
if 0 < a and a < 5:
   print('0 < a < 5')
else:
   print('a <= 0 or 5 <= a')

>> 0 < a < 5

a が 0 < a < 5 を満たすかどうかを判定しています。Python では 0 < a < 5 とは記述できないので、0 < a かつ a < 5 つまり 0 < a and a < 5 という 2 つの条件文の and で記述します。同様にまたはつまり or の例を以下に示します。

a = 2
if a <= 0 or 5 <= a:
   print('a <= 0 or 5 <= a')
else:
   print('0 < a < 5')

>> 0 < a < 5

前の例と同内容の条件判定ですが or を使って記述しています。a <= 0 または 5 <= a つまり a <= 0 or 5 <= a であればという if 文に対する else で判定しています。

and や or による条件は 2 つ以上の場合も利用できます。次の例を見てください。

a = 2
if 0 < a and a < 5 and a%2 == 0:
   print('0 < a < 5 and even number')
else:
   print('a <= 0 or 5 <= a or odd number')

>> a < a < 5 and eve number

先の例に a が偶数であればという a %2 == 0 という条件を追加しています。このように and, or を複数回使っての複数条件を指定することが可能です。and と or を同時に使うことも可能です。次の例を見てください。

a = 8
if 0 < a and a < 5 or a%2 == 0:
   print('0 < a < 5 or even number')
else:
   print('a <= 0 or 5 <= a or odd number')

>> 0 < a < 5 or even number

ここで and と or の優先順位について考えてみます。Python では and と or では and の方が優先順位が高いです。つまり 0 < a and a < 5 or a%2 == 0 を括弧付きで記載すると (0 < a and a < 5) or a%2 を意味します。可読性をあげるという意味では優先順位を明確に伝えるためにカッコ付きで記載すべきだと思います。具体的には以下のようにすべきです。

a = 8
if (0 < a and a < 5) or a%2 == 0:
   print('0 < a < 5 or even number')
else:
   print('a <= 0 or 5 <= a or odd number')

>> 0 < a < 5 or even number

優先順位を意識して記載しているのか、優先順位の規則で偶然に正しく動いているのかを明確に他の人に伝えることが重要です。

今回は条件分岐に複数の条件を指定する方法として and, or を紹介しました。よく使う記述ですので、しっかりと身につけてください。

条件分岐に関するまとめの続きは以下からどうぞ。

では、ごきげんよう。





この記事が気に入ったらサポートをしてみませんか?