10. 条件分岐(IF文)

Python if文の徹底解説(and・or・notによる複数条件の一行化、elif・elseの条件分岐など)

更新日:

Pythonにおけるif文使い方を初心者向けに解説した記事です。if文の定義方法や注意点、elif・elseを使った条件分岐、論理演算子(and・or・not)による複数条件や否定条件の指定方法など、if文についてはこれだけを読んでおけば良いよう、徹底的に解説しています。
 
if文とは、条件に従って処理を分岐させるために使われるものです。
 
if文の条件式では数値や文字列などのオブジェクトの持つ値が等しいかどうかや大きいか小さいかを調べてTrue(条件に当てはまる)又はFalse(条件に当てはまらない)を返します。そしてTrueの時に処理を実行することになります。
 

Pythonでのif文の記述方法

if文の記述方法は以下になります。

 
if文に含まれる処理は、インデント(字下げ)して記述します(通常、インデントには半角スペース4つが使われます。)。処理が複数行ある場合も、全てインデントします。
 
インデントが終わると、if文の一連の処理は終わります。また条件式の後には、必ず :(コロン)を付けてください。
 
 
if文の利用方法について、いくつか例を挙げていきます。
 
変数salesに代入された数値が、100以上の場合、「Salesは100以上です。」と表示します。またif文の処理の後に、「if文の処理ではありません。」と表示します。これはif文に関係なく、表示されます。
 
salesに120を代入し実行するとif文の処理が実行され「Salesは100以上です。」と表示されました。また「if文の処理ではありません。」も表示されます。

In [1]: sales = 120
...: if sales >= 100:
...:        print("salesは100以上です。")
...: print("if文の処理ではありません。")
Out[1]: salesは100以上です。
            if文の処理ではありません。

 
 
同じ処理に対して、今度はsalesに80を代入し実行してみましょう。すると、if文の処理は実行ず、if文の後の処理で「if文の処理ではありません。」とだけ表示されました。

In [2]: sales = 80
...: if sales >= 100:
...:        print("salesは100以上です。")
...: print("if文の処理ではありません。")
Out[2]: if文の処理ではありません。

 
 

elif、elseを使った条件分岐

if文を記述する際に、条件がいくつかある場合、elifを使って条件を増やすことができます。また、全ての条件を満たさなかった場合の処理は、elseを使って書きます。
 
elif、elseを用いたif文の記述方法は以下になります。

if 条件式1:
       条件式1がTrueの時に実行する処理
elif 条件式2:
       条件式2がTrueの時に実行する処理
…         …        …
elif 条件式n:
       条件式nがTrueの時に実行する処理
else:
       条件式1~nが全てFalseの時に実行する処理

 
elif、elseに含まれる処理も、インデント(字下げ)して記述します。処理が複数行ある場合も、全てインデントします。また条件式の後には、必ず :(コロン)を付けてください。
 
条件式1~nについては、上から順にTrue/Falseの判定を行い、Trueになった最初の条件式に該当する処理だけが実行されます。
 
 
elif、elseの利用方法について、いくつか例を挙げていきます。
 
変数salesに代入された数値が、それぞれ、
       100以上の場合、「Salesは100以上です。」
       100未満で50以上の場合、「salesは100未満、50以上です。」
       50未満で20以上の場合、「salesは50未満、20以上です。」
       20未満の場合、「salesは20未満です。」
と表示します。
 
salesに80を代入し実行すると1つ目のelif文の処理が実行され「salesは100未満、50以上です。」と表示されました。2つ目のelif文の処理やelse文の処理は実行されません。

In [3]: sales = 80
...: if sales >= 100:
...: print("salesは100以上です。")
...:        elif sales >= 50:
...:              print("salesは100未満、50以上です。")
...:        elif sales >= 20:
...:              print("salesは50未満、20以上です。")
...:        else:
...: print("salesは20未満です。")
Out[3]: salesは100未満、50以上です。

 
同じ処理に対して、今度はsalesに10を代入し実行すると、全てのif、elif文の条件はFalseになりますので、else文の処理が実行され「salesは20未満です。」と表示されます。

In [4]: sales = 10
...: if sales >= 100:
...: print("salesは100以上です。")
...:        elif sales >= 50:
...:              print("salesは100未満、50以上です。")
...:        elif sales >= 20:
...:              print("salesは50未満、20以上です。")
...:        else:
...: print("salesは20未満です。")
Out[4]: salesは20未満です。

 
 

if文の比較演算子、論理演算子

これまで説明してきましたif文の条件式の中で使用されるのが比較演算子で、Pythonで利用されているものは以下になります。

比較演算子意味
>左辺の値が大きい
>=右辺の値より左辺の値が大きいか等しい
<右辺の値が大きい
<=右辺の値より左辺の値が小さいか等しい
==両辺の値が等しい
!=両辺の値が等しくない

 
また条件式の中では論理演算子も利用でき、Pythonで利用されているものは以下になります。

論理演算子意味
and両辺の値が共にTrueの場合にTrue
or両辺の内、少なくとも1つがTrueの場合にTrue
notnot以降の条件式がTrueの時にFalse、Falseの時にTrue

 
 

論理演算子and、orによる複数条件の指定方法

if文を記述する際に条件がいくつかある場合、論理演算子のandやorを利用して、複数の条件を記述することもできます。
 
論理演算子andを用いたif文の記述は以下になります。

if 条件式1 and 条件式2:
       条件式1、条件式2がともにTrueの時に実行する処理

 
また論理演算子orを用いたif文の記述は以下になります。

if 条件式1 or 条件式2:
       条件式1、条件式2のいずれかがTrueの時に実行する処理

 
 
論理演算子andを利用した例を見てみましょう。
 
変数salesに代入された数値が、100以上500以下の場合、「Salesは100以上、500未満です。」と表示します。そしてそれ以外の場合、「Salesは100未満、もしくは、500以上です。」と表示します。
 
salesに120を代入し実行すると「Salesは100以上、500未満です。」と表示されました。

In [5]: sales = 120
...: if sales >= 100 and sales < 500: ...:        print("salesは100以上、500未満です。")
...: else:
...:        print("salesは100未満、もしくは、500以上です。")
Out[5]: salesは100以上、500未満です。

 
同じ処理に対して、今度はsalesに90を代入し実行すると、「salesは100未満、もしくは、500以上です。」と表示されました。

In [6]: sales = 90
...: if sales >= 100 and sales < 500: ...:        print("salesは100以上、500未満です。")
...: else:
...:        print("salesは100未満、もしくは、500以上です。")
Out[6]: salesは100未満、もしくは、500以上です。

 
 

論理演算子notによる条件での否定の指定方法

if文を記述する際に論理演算子notを用いて、ある条件を満たさなかった場合に、特定の処理を実行するよう記述することもできます。
 
論理演算子notを用いたif文の記述は以下になります。

if not 条件式1:
       条件式1がFalseの時に実行する処理

 
 
また論理演算子notを利用した例も確認していきましょう。
 
if notは、条件が成立しなければif文内に記述した処理が実行されます。変数salesに代入された数値が、100では無い場合、「Salesは100ではありません。」と表示します。そしてそれ以外の場合、「Salesは100です。」と表示します。
 
salesに400を代入し実行すると「Salesは100ではありません。」と表示されました。

In [7]: sales = 400
...: if not sales == 100:
...:        print(“Salesは100ではありません。”)
...: else:
...:        print(“Salesは100です。”)
Out[7]: Salesは100ではありません。

 
一方でsalesに100を代入し実行すると「Salesは100です。」と表示されました。

In [8]: sales = 100
...: if not sales == 100:
...:        print(“Salesは100ではありません。”)
...: else:
...:        print(“Salesは100です。”)
Out[8]: Salesは100です。

 
 

-10. 条件分岐(IF文)

Copyright© AI-interのPython3入門 , 2019 All Rights Reserved.