Developer

【Python独学】if文による条件分岐処理の基本
2020.11.02
Lv1

【Python独学】if文による条件分岐処理の基本

今回は、if文を用いた条件分岐について扱っていきます。


if文について

Pythonでは、if文と呼ばれる条件分岐を扱うための構文が用意されています。
if文は他のプログラム言語で用いられている条件分岐の構文と概ね同じ役割になっています。

条件分岐とは、
「もし条件1が真ならばxを実行する、条件1が偽ならyを実行する」といったように
条件を満たしている場合、満たしていない場合で処理を分岐させることができます。

まずはif文の書式を見てみましょう。

if 条件式:
    条件式が真の時の処理
    ...
    ...

上記が一番シンプルなif文の書式になります。
では例を見てみましょう。

x = 5
if x < 10:
    print("xの値は10未満です")          ###インデントする
C:\Python> python 3-1.py
xの値は10未満です

xに入れた値をif文の条件式で判定しています。
条件式では、前回解説した比較演算子を用いています。
この例では、”xの値が10未満である”という条件が真であるとき、
print関数を実行して文を表示するようになっています。
もしxの値が10以上だった場合は

x = 20
if x < 10:
    print("xの値は10未満です")          ###インデントする
C:\Python> python 3-1.py

上記のように条件式が偽になるため、処理は実行されず何も表示されません。

if文などを書く際は、インデントに気をつける必要があります。
上記の例にコメントしてありますが、if文内の処理の部分はインデントをつけて表現します。
インデントをつける際は、文頭にtabキーを入力するか、半角スペース4つを入力するのが一般的です。

Python以外の言語では、ブロック(文の集まり)を構成するのに{}で囲んだりすることが多いですが、
Pythonでは同じ数の空白でインデントされた文がブロックとみなされます。
例えば、次回以降の記事で扱う予定ですが、if文の中にif文を記述するような場合は
以下のようにインデントします。

x = 20
if x >= 10:
    if x < 30:                               ###同じ数の空白でインデントされた部分は
        print("x = " + str(x))               ###ひとかたまりのブロックとみなされます。
        print("xの値は10以上30未満です")
C:\Python> python 3-1.py
x = 20
xの値は10以上30未満です

上記の例では、
・変数xの宣言と1番目のif文が記述されたブロック
・2番目のif文が記述されたブロック
・2番目のif文の処理に当たる、print関数が記述されたブロック
の3つのブロックを、インデントに用いる空白の数を変えることで表しています。

このように、インデントの数が増えれば別のブロックとみなされるので、
if文などの構文を扱う際はインデントに気をつけて記述しましょう。


if~else文

上記の例では、条件が真である場合、つまり条件を満たしている場合に
処理を実行するif文を見ていきました。
if文ではそれ以外に、「条件が真の場合に処理X、偽の場合に処理Yを実行する」
というように条件に応じた処理を別々に記述することが出来ます。
それが、if~else文になります。
書式を見てみましょう。

if 条件式:
    条件式が真の時の処理		###処理X
else:
    条件式が偽の時の処理		###処理Y

if文の処理を書いた際と同じように、条件が偽である場合の処理を
インデントして記述しています。
ではこちらも例を見てみましょう。

x = 20
if x < 10:
    print("xの値は10未満です")
else:
	print("xの値は10以上です")
C:\Python> python 3-1.py
xの値は10以上です

“x < 10″という条件が真である場合と偽である場合で
処理を変えています。


if~elif~else文

更にPythonでは、複数の条件式をつなげて処理を分岐することができます。
それが、if~elif~else文になります。
書式を見てみましょう。

if 条件式1:
    条件式1が真の時の処理			###処理X
elif 条件式2:
    条件式1が偽であり、条件式2が真の時の処理	###処理Y
else:
    条件式1、2がどちらも偽の時の処理		###処理Z

条件式1が真の場合処理Xを実行します。
条件式1が偽である場合、条件式2の判定に移り、2が真の場合処理Yを実行します。
条件式2が偽である場合、処理Zを実行します。
例を見てみましょう。

x = 60
if x >= 100:
    print("xの値は100以上です")
elif x >= 50:
	print("xの値は50以上です")
else:
	print("xの値は50未満です")
C:\Python> python 3-1.py
xの値は50以上です

上記の例では、xの値が100以上である場合、50以上である場合、それ以外の場合で
処理を3つに分岐させています。
条件式2を記述するelif部分は分岐させたい条件の数だけ記述することができます。


まとめ

if文では、条件に応じて処理を分岐させることができます。
if~else文やif~elif~else文を用いることで、複数の条件に応じて
処理を複数に分岐させることもできます。
if文を記述する際は、インデントに気をつけて記述しましょう。


確認問題

1.変数socreに整数型の値を代入し、以下の条件に応じた処理をif文で記述してみましょう。
・scoreが50以上の場合、
「scoreの値は50以上なので合格です」と出力
・それ以外の場合
「scoreの値は50未満なので不合格」と出力

連載目次

独学で学ぶ Pythonプログラミング 連載目次