if文を使った条件分岐
Python で条件分岐を行うには if 文を使います。ここでは if 文を使った条件分岐の方法について解説します。
(Last modified: )
if文の基本的な使い方
if 文は指定した条件式が真の時にだけ処理を実行します。基本的な書式は次の通りです。
if 条件式: 条件式が真の時に実行する文
条件式が真となった場合、その後に記述されたブロックの中の文を順に実行します。複数の文を実行させたい場合にはブロック内に記述してください。
if 条件式: 条件式が真の時に実行する文1 条件式が真の時に実行する文2 条件式が真の時に実行する文3
※ Python ではブロックをインデントを使って定義します。詳しくは「Pythonにおけるインデントを使ったブロックの定義」を参照されてください。
条件式では比較演算子や論理演算子を使って条件を記述します。次の例では変数 old に代入されている値が 20 よりも小さい場合にブロック内の処理を実行します。
old = 18 if old < 20: print("20歳未満の方はご利用できません")
変数 old には 18 という数値が代入されているので、 if 文に記述された条件式は真となり、その後に記述されたブロック内の文が実行されます。
次の 2 つのサンプルを見てください。
old = 18 print("年齢は" + str(old) + "です。") >> 年齢は18です。 if old < 20: print("20歳未満の方はご利用できません。") print("またのご利用をお待ちしています。") >> 20歳未満の方はご利用できません。 >> またのご利用をお待ちしています。 print("ありがとうございました。\n") >> ありがとうございました。
old = 24 print("年齢は" + str(old) + "です。") >> 年齢は24です。 if old < 20: print("20歳未満の方はご利用できません。") print("またのご利用をお待ちしています。") print("ありがとうございました。") >> ありがとうございました。
変数 old に 数値を代入したあとで if 文を実行しています。最初のサンプルでは if 文の条件式が真となったため、その後のブロックに記述された文が実行されました。次のサンプルでは if 文の条件式が偽となったため if 文のブロック内の文は実行されずに次の処理へ移りました。
条件式が偽の時の処理(if...else)
if 文では指定した条件式が真の時に実行する処理をブロックの中に記述しますが、あわせて条件式が偽だった場合に実行する処理を記述することもできます。次の書式を使用します。
if 条件式: 条件式が真の時に実行する文 ... else: 条件式が偽の時に実行する文 ...
if 文の条件式が偽だった場合に実行する文を else: のあとのブロック内に記述します。条件式は必ず真か偽のどちらかとなりますので、真の時のブロックか偽の時のブロックかどちらか必ず一つのブロック内の文を実行することになります。
次の 2 つのサンプルを見てください。
old = 18 print("年齢は" + str(old) + "です。") >> 年齢は18です。 if old < 20: print("20歳未満の方はご利用できません。") print("またのご利用をお待ちしています。") else: print("ご利用ありがとうございます。開始ボタンを押してください。") >> 20歳未満の方はご利用できません。 >> またのご利用をお待ちしています。
old = 24 print("年齢は" + str(old) + "です。") >> 年齢は24です。 if old < 20: print("20歳未満の方はご利用できません。") print("またのご利用をお待ちしています。") else: print("ご利用ありがとうございます。開始ボタンを押してください。") >> ご利用ありがとうございます。開始ボタンを押してください。
変数 old に 数値を代入したあとで if 文を実行しています。最初のサンプルでは if 文の条件式が真となったため、その後のブロックに記述された文が実行されました。次のサンプルでは if 文の条件式が偽となったため else の後のブロックに記述された文が実行されました。
複数の条件式を使った条件分岐(if...elif...else)
if 文では単独の条件式だけではなく複数の条件式を使った条件分岐を記述することもできます。次の書式を使用します。
if 条件式1: 条件式1が真の時に実行する文 ... elif 条件式2: 条件式1が偽で条件式2が真の時に実行する文 ... elif 条件式3: 条件式1及び条件式2が偽で条件式3が真の時に実行する文 ... else: すべての条件式が偽のときに実行する文 ...
評価は上から順に行われます。最初に条件式 1 を評価し、真だった場合には次のブロック内の文を実行して if 文の次の処理へ移ります。条件式 1 が偽だった場合、次の条件式 2 を評価して、真だった場合は次のブロック内の文を実行して if 文の次の処理へ移ります。すべての条件式で同じことを繰り返し、最後にすべての条件式が偽だった場合に次のブロック内の文を実行します。
elif は必要な数だけ記述することができます。また else の部分は不要であれば削除して構いません。
複数の条件式が記述されていますが、上から順に評価していきいずれかの条件式で真になった場合はその後のブロック内の文を実行し if 文の次へ処理が移ります。真となった条件式以降に記述されている条件式は評価されない点に注意してください。
この書式は次のように記述した場合と同じです。
if 条件式1: 条件式1が真の時に実行する文 ... else: if 条件式2: 条件式1が偽で条件式2が真の時に実行する文 ... else: if 条件式3: 条件式1及び条件式2が偽で条件式3が真の時に実行する文 ... else: すべての条件式が偽のときに実行する文 ...
※ 他のプログラミング言語で使われる elseif ではなく elif である点に注意してください。
次の 2 つのサンプルを見てください。
postcode = "125-0062" print("郵便番号は " + postcode + " です。") >> 郵便番号は 125-0062 です。 if postcode == "140-0015": address = "東京都品川区西大井" elif postcode == "102-0072": address = "東京都千代田区飯田橋" elif postcode == "125-0062": address = "東京都葛飾区青戸" else: address = "不明" print("住所は " + address + " です。") >> 住所は 東京都葛飾区青戸 です。
postcode = "102-0072" print("郵便番号は " + postcode + " です。") >> 郵便番号は 102-0072 です。 if postcode == "140-0015": address = "東京都品川区西大井" elif postcode == "102-0072": address = "東京都千代田区飯田橋" elif postcode == "125-0062": address = "東京都葛飾区青戸" else: address = "不明" print("住所は " + address + " です。") >> 住所は 東京都千代田区飯田橋 です。
変数 postcode に代入されている値を複数の条件式で評価していき、真となったあとのブロック内の文を実行しています。
-- --
if 文を使った条件分岐を行う方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。