今回は、if文を使った条件分岐と「elif」の書き方を解説します。
また、理解を深めるために「Python 条件分岐を使いこなす!」も、合わせてご覧ください。
if文の基本的な使い方
if文の基本的な使い方
if 文は指定した条件式が「真(True)」のときにだけ処理を実行します。
基本的な書き方は、
if 条件式:
条件式が「真(True)」のときに実行する文
if 条件式:
条件式が「真(True)」のときに実行する文1
条件式が「真(True)」のときに実行する文2
条件式が「真(True)」のときに実行する文3
- 条件式が「真(True)」となった場合に、その後に記述されたブロックの中の文を順に実行します。
- Pythonでは、ブロックをインデントを使って定義します。
- 条件式では比較演算子や論理演算子を使って条件を記述します。
- 複数の文を実行させたい場合にはブロック内に記述します。
インデントとは、字下げ(空白)のことをいいますが、他のプログラミング言語ではインデントを行っても、行わなくても動作自体に問題はないものが多いのですが、
Pythonでは、コードのインデントがそのまま直接プログラム動作に影響してしまいます。
「if文」の条件式が成立した場合の処理を書くときは、必ずインデントをするようにしてください。
処理が、「if文」の中にあるかどうかは、インデントによって判別されます。
インデントを正しく行わないとエラーになりますので、忘れずに入れるようにしてください。
elif を使う(if ~ elif ~ else)
if ~ elif ~ else
「elif」を使って、さらに条件を加える場合の処理について学んでいきましょう。
elifとは
「if文」で、条件が成り立たなかった場合、複数定義したいときに、「elif」を使います。
「elif」を使うことで、
「もし、~ならば、〇〇を行う。~ならば〇〇を行う、そうでなければ〇〇を行う」という処理が可能になります。
elifの書き方
if (条件式):
(条件が成り立つときの処理)
elif (2つめの条件式):
(2つ目の条件が成り立つときの処理)
else:
(条件を満たさないときの処理)
さらに条件を加えたい場合に使うのが、「elif」です。
「if文」のあとに、「elif」と書き、2つ目の条件式を書き、コロンを付けて改行します。
この行もインデントをひとつ右にずらして「2つ目の条件を満たしたときの処理」を書きます。
「elif」までの、全ての条件を満たさない場合は、「else」の条件へとプログラムが進みます。
elifの注意点
評価は上から順に行われ、最初に条件式を評価し、「真(True)」だった場合は、次のブロック内の文を実行して、if文の次の処理へ移ります。
最初の条件式が「偽(False)」だった場合、次の条件式を評価して、「真(True)」の場合は次のブロック内の文を実行して、if文の次の処理へ移ります。
最後にすべての条件式が「偽(False)」の場合に、次のブロック内のelse文を実行するという流れとなります。
elseの部分は必要がなければ削除しても構いません。
他のプログラミング言語で使われる elseif ではなく elif である点に注意してください。
「elif」の条件追加は制限がなく、いくつでも書くことが可能です。
その際の注意点としてプログラムは上から順に実行されていきますから、順に条件が成り立つかを判断し、最初に条件に合致した部分の処理だけが行われます。
そのため、書き方の順番を間違えると意図しない条件が先に実行されてしまうことがありますので、注意してください。
また、他のプログラミング言語で「elseif」も同じ意味で使われますが、Pythonでは「elif」になりますので、こちらも注意してください。
if ~ elif ~ else(例)
(例)
変数「price」に値を代入します。
price = 3500
if price < 3500:
if 文の条件が成り立つときに出力します。
print(‘購入が可能です。’)
変数の値が等しいときに出力します。
elif price == 3500:
print(‘購入可能ですが、所持金が0円になります。’)
if 文の条件が成り立たないときに出力します。
else:
print(‘購入出来ません。’)
出力結果は、「購入可能ですが、所持金が0円になります。」となります。
記述例
price = 3500
if price <= 3500:
print('購入が可能です。')
elif price == 3500:
print('購入可能ですが、所持金が0円になります。')
else:
print('購入出来ません。')
# 出力結果は、「購入可能ですが、所持金が0円になります。」となります。
if文でandや、orを使って複数条件を指定する
if文でandや、orを使って複数条件を指定する
if文の条件がいくつかある場合、論理演算子のandやorを使って、複数の条件を記述することができます。
if文でand(論理積(かつ))を使った複数条件の指定
論理演算子andの書き方
if 条件式1 and 条件式2:
条件式1、条件式2が、ともに「True」のときに実行する処理
さらに条件式を追加する場合、
if 条件式1 and 条件式2 … and条件式n :
条件式1、条件式2、… 条件式nが、ともに「True」のときに実行する処理
(例)変数Aに代入された数値が、10以上50以下の場合、「Aは10点以上、50点未満です。」と表示し、それ以外の場合は、「Salesは10点未満、もしくは、50点以上です。」と表示します。
A = 15
if A >= 10 and A < 50:
print("Aは10点以上、50点未満です。")
else:
print("Aは10点未満、もしくは、50点以上です。")
# 実行結果:
Aは10点以上、50点未満です。
if文でor(論理和(または))を使った複数条件の指定
論理演算子orの書き方
if 条件式1 or 条件式2:
条件式1、条件式2のいずれかが「True」のときに実行する処理
さらにorで条件式を追加する場合、
if 条件式1 or 条件式2 … or 条件式n :
条件式1、条件式2、… 条件式nのいずれかが「True」のときに実行する処理
(例)変数Bに代入された数値が、50点以上10点未満の場合、「Trueです。」と表示し、それ以外の場合、「Falseです。」と表示します。
B = 15
if B >= 50 or B < 10:
print("Trueです。")
else:
print("Falseです。"))
# 実行結果:
Falseです。
andとorの両方を使った複数条件の指定
if文では、論理演算子andとorの両方を組み合わせて使うことができます。
注意点としては、論理演算子andは、orよりも優先されます。
(例)変数Cに代入された数値が、50点以上、もしくは20点未満で、かつ、変数Dに代入された値が5の場合、「Trueです。」と表示し、それ以外の場合「Falseです。」と表示します。
C = 5
D = 5
if C >= 50 or C < 20 and D == 5:
print("Trueです。")
else:
print("Falseです。")
# 実行結果:
Falseです。
C = 5
D = 5
if (C >= 50 or C < 20) and D == 5:
print("Trueです。")
else:
print("Falseです。")
# 実行結果:
Trueです。