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文のelse、elifに関する詳しい説明は、「Pythonでif文でelse、elifを使った複数の条件分岐」を参照ください。
 
 

 
 

著書紹介(清水 義孝)

好評発売中!!

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以上です。

 
 
if文のand、orに関する詳しい説明は、「Pythonのif文でand、orによる複数条件の指定方法」を参照ください。

 
 

著書紹介(清水 義孝)

好評発売中!!

論理演算子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です。

 
 

if文 inによる特定の値が含まれるかの判定方法

if文を利用して、リストやタプルなどに特定の値が含まれているかを判定することもできます。

 
inを用いたif文の記述は以下になります。

if 特定の値 in リストなど:
      Trueの時(含まれている時)に実行する処理

 
また特定の値が含まれていないことを判定するにはnot inを利用します。

if 特定の値 not in リストなど:
      Trueの時(含まれていない時)に実行する処理

 
それではif文でinを利用した例を確認していきます。
 
変数xの値がリスト[1, 2, 3, 4]に含まれる場合、「Trueです。」と表示します。そして含まれない場合、「Falseです。」と表示します。xに3を代入し実行すると「Falseです。」と表示されました。

In [9]: x = 3
...: if x in [1, 2, 4, 5]:
...:     print("Trueです。")
...: else:
...:     print("Falseです。")
Out[9]: Falseです。

 

同様の処理で、今度はxに4を代入し実行すると「Trueです。」と表示されます。

In [10]: x = 4
....: if x in [1, 2, 4, 5]:
....:     print("Trueです。")
....: else:
....:     print("Falseです。")
Out[10]: Trueです。

 
 
inによる特定の値が含まれるかの判定方法の詳しい説明は、「Pythonのif文 inによる特定の値が含まれるかの判定方法」を参照ください。
 
 

if文を一行で記述する方法

if文は一行で記述することもできます。if文を一行で記述する方法は次のようになります。

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

 
if文の中の条件式や処理の順番が変わり、わかりづらくなりましたので、通常のif文との違いを番号を付けて、確認しましょう。
 
通常のif文の構成要素に番号を振ると次のようになります。
 

 
これを一行で記述するには、次のように順番を変える必要があります。

1.と2.の箇所の順番が入れ替わっています。

 
 
それでは、以下のif文を使った記述を一行に書き直してみましょう。

In [11]: x = 1
....: if x == 3:
....:     print("Trueです。")
....: else:
....:     print("Falseです。")
Out[11]: Falseです。

 
 
上記のif文を一行に書き直すと、次のようになります。

In [12]: x = 1
....: print("Trueです。") if x == 3 else print("Falseです。")
Out[12]: Falseです。

 
 
今度は変数xに3を代入すると、「Trueです。」と表示されました。

In [13]: x = 3
....: print("Trueです。") if x == 3 else print("Falseです。")
Out[13]: Trueです。

 
このようにして、if文は一行でも記述することができます。
 
if文を一行で記述する方法の詳しい説明は、「Pythonでif文(else/elif)を一行で記述する方法」を参照ください。
 
 
 
 
関連記事です。
Pythonに関する重要なトピック全般について学んでいきたいと考えておられる方には、次のリンクをお勧めします。

 

-10. 条件分岐(IF文)

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