はじめに
Pythonのコーディングを行っている際に、条件分岐の構文を忘れて何回か調べたので記事にまとめます。様々な言語を使っているとだんだん混乱してくる。特に「elif」調べないと思い出せなかった。ほかの言語だと「else if」とかいろいろな表現があってややこしい。
この記事では「if文」、「if~else文 」、「if~elif~else文 」についてのサンプルプログラムと実行結果をまとめています。
if文
実装例
if文のサンプルプログラムは以下になります。
if文は条件を満たした場合、インデントが一つ下がった処理を行います。
よって、以下の作成したプログラムを実行する場合、引数に数字を入れれば「数字です」というメッセージが出力された後に「 処理終了 」というメッセージが出力されます。
それ以外はif文の条件を満たさないので「処理終了」のメッセージだけが出力されます。
※今回の記事にフォーカスを絞っているので2個以上の引数を入れるとエラーになります。引数についてはほかの記事にまとめてあります。興味のある方は以下からお願いします。
実行結果
それでは、プログラムを実行してみましょう。
一回目の引数は『 10 』です。if文の条件は「数字であること 」 なので条件を満たして「数字です」のメッセージが出力されます。
python if.py 10

二回目の引数は『 a 』です。こちらの実行パターンはif文の条件を満たしていないので「数字です」のメッセージは出力されず。「処理終了」のメッセージだけ出力されます。
python if.py a

if~else文
実装例
先ほどのプログラムだと数字以外の引数を入れても「処理終了」のメッセージしか出力されず。わかりにくいので、数字以外が入力された場合、「数字ではありません」というメッセージが出力されるように改修しました。
実行結果
まずは、if文の条件を満たす引数で実行してみます。こちらの場合は「数字です」のメッセージが出力されます。
python else.py 10

今回の実行パターンはif文条件を満たしません。つまり、「else文」のほうの処理を実行します。実行結果を見ると、「数字ではありません」が出力されています。
python else.py a

if~elif~else文
実装例
最後は「if~elif~else文 」です。こちらも前回のソースを少し改修してサンプルを作ってみました。
スポンサーリンク
変更箇所は以下になります。
if param.isdecimal(): val = int(param) if val <= 5: print("5以下です") elif val <= 10: print("10以下です") else: print("10より大きいです")
もともとのプログラムでは数字の場合、「数字です」とメッセージを表示していましたが、数字の値で処理を分けました。
5以下の場合:5以下です
10以下の場合:10以下です
それ以外の場合:10より大きいです
プログラムは上から順番に評価していきます。例えば引数を6にした場合は「if val <= 5」も「elif val <= 10」両方とも条件を満たしていますが一番最初に一致した条件の処理が行われ以降の判定は行いません
実行結果
ではプログラムを実行してみます。引数は『5、6、10、11』で実行します。


まとめ
条件分岐には 「if文」、「if~else文 」、「if~elif~else文 」 がある
条件文は条件を満たした場合、インデントが下がった処理をおこなう
条件判定は上から順に行い、条件を満たした場合は後続の条件判定は行わない