if文を記述する際に条件がいくつかある場合、論理演算子のandやorを利用して、複数の条件を記述することもできます。但し、andやorを混合して利用する場合は、少し注意が必要です。
この記事では、andやorを用いて、複数の条件を記述する方法を確認していきましょう。
複数条件の記述以外のif文全般に関するトピックは、次の記事をご参照ください。
>> 図解!Python if文の徹底解説
発売数9,000本突破を記念して、今だけ期間限定で87%オフの大セール中!!!
if文でand(論理積(かつ))を使った複数条件の指定
論理演算子andを用いたif文の記述は以下になります。
条件式1、条件式2がともにTrueの時に実行する処理
さらにandで条件式を追加することもできます。
条件式1、条件式2、… 条件式nがともにTrueの時に実行する処理
またelseやelifと組み合わせて、複数の条件分岐も記述することができます。
条件式1、条件式2がともにTrueの時に実行する処理
elif 条件式3 and 条件式4:
条件式3、条件式4がともにTrueの時に実行する処理
else:
上記のif文、elif文の条件が全てFalseの時に実行する処理
論理演算子andを利用した例を見てみましょう。
変数salesに代入された数値が、100以上500以下の場合、「Salesは100以上、500未満です。」と表示します。そしてそれ以外の場合、「Salesは100未満、もしくは、500以上です。」と表示します。
salesに120を代入し実行すると「Salesは100以上、500未満です。」と表示されました。
1 2 3 4 5 | sales = 120 if sales >= 100 and sales < 500: print("salesは100以上、500未満です。") else: print("salesは100未満、もしくは、500以上です。") |
同じ処理に対して、今度はsalesに90を代入し実行すると、「salesは100未満、もしくは、500以上です。」と表示されました。
1 2 3 4 5 | sales = 90 if sales >= 100 and sales < 500: print("salesは100以上、500未満です。") else: print("salesは100未満、もしくは、500以上です。") |
if文でor(論理和(または))を使った複数条件の指定
また論理演算子orを用いたif文の記述は以下になります。
条件式1、条件式2のいずれかがTrueの時に実行する処理
andと同様、さらにorで条件式を追加することもできます。
条件式1、条件式2、… 条件式nのいずれかがTrueの時に実行する処理
またelseやelifと組み合わせて、複数の条件分岐も記述することができます。
条件式1、条件式2のいずれかがTrueの時に実行する処理
elif 条件式3 or 条件式4:
条件式3、条件式4のいずれかがTrueの時に実行する処理
else:
上記のif文、elif文の条件が全てFalseの時に実行する処理
今度は論理演算子orを利用した例を見てみましょう。
変数xに代入された数値が、500以上100未満の場合、「Trueです。」と表示します。そしてそれ以外の場合、「Falseです。」と表示します。
xに120を代入し実行すると「Falseです。」と表示されました。
1 2 3 4 5 | x = 120 if x >= 500 or x < 100: print("Trueです。") else: print("Falseです。") |
同じ処理に対して、今度はxに550を代入し実行すると「trueです。」と表示されました。
1 2 3 4 5 | x = 550 if x >= 500 or x < 100: print("Trueです。") else: print("Falseです。") |
発売数9,000本突破を記念して、今だけ期間限定で87%オフの大セール中!!!
if文でandとorを使った複数条件の指定
if文では、論理演算子andとorの両方を組み合わせて使うことができます。この場合の注意点は、論理演算子andがorよりも優先されるということです。
例えば、次のようなandとorを組み合わせた条件があると、
上記の条件文がTrueの時に実行する処理
まずandで結ばれた「条件式2 and 条件式3」の箇所が優先され、次に条件式1と先ほどの条件「条件式2 and 条件式3」がorで結ばれることになります。
つまり、以下の条件と同様になります。
上記の条件文がTrueの時に実行する処理
ということで、上の「上記の条件文がTrueの時」とは、「条件式2と条件式3ともにTrue、もしくは、条件式1がTrueの時」という事になります。
今度は論理演算子orを利用した例を見てみましょう。
変数xに代入された数値が、50以上、もしくは20未満で、かつ、変数yに代入された値が5の場合、「Trueです。」と表示し、そしてそれ以外の場合「Falseです。」と表示したいとします。
そして次のようなif文を書き、xに5を、yに5を代入し実行すると
1 2 3 4 5 6 | x = 5 y = 5 if x >= 50 or x < 20 and y == 5: print("Trueです。") else: print("Falseです。") |
「Falseです。」と表示されてしまいました。これは先ほど説明したとおり、andとorではandが優先された為です。
つまり、if文の条件は「x >= 50 or (x < 20 and y == 5):」となり、「(x < 20 and y == 5)」がFalse、「x >= 50」もFalseとなった結果、「Falseです。」と表示されてしまいました。
今度は、次のようにif文を変更して、先ほどと同様、xに5を、yに5を代入し実行すると
1 2 3 4 5 6 | x = 5 y = 5 if (x >= 50 or x < 20) and y == 5: print("Trueです。") else: print("Falseです。") |
期待通り「Trueです。」と表示されました。
このように、andとorを合わせて使う場合には優先順位に気を付けて使う必要があります。
関連記事です。
Pythonのif文全般のトピックについては、こちらに纏めた記事がございます。
Pythonに関する重要なトピック全般について学んでいきたいと考えておられる方には、次のリンクをお勧めします。