【Python】elif文とは?条件分岐の書き方と使い方 Vol.2

前の記事でelif文の書き方について、まとめました。今回はそのコードをもう少し複雑にしてみましょう。こちらの記事(if文の入れ子(Vol.2))で紹介したコードを、elifを用いて可読性を上げたいと思います。

目次

if文の入れ子(ネスト)

さて、前の記事(if文の入れ子(Vol.2))では「明日の天候によって、行動を変える。また、所持金によっても行動が変化する」という次のようなプログラムを作りました。

作りたいプログラム

変数tomorrowと変数moneyの値により次の表のよう行動を変化させます。

所持金5000円以上所持金5000円未満
晴れデパートに買い物にいくスーパーに買い物にいく
曇りスポーツジムにいくランニングにいく
映画館で映画をみる家で映画をみる
それ以外スケートにいく雪だるまつく~ろ~♪

if文の入れ子(ネスト)でのアルゴリズム

まず、アルゴリズムですが、次のようになります。

if文の入れ子(ネスト)のコード

このアルゴリズムをif文の入れ子(ネスト)で作成すると次のようなコードになります。

Python
tomorrow = "雹"
money = 6000
if tomorrow != "晴れ":
    if tomorrow != "曇り":
        if tomorrow == "雨":
            if money >= 5000:
                print("映画館で映画をみる")
            else:
                print("家で映画をみる")
        else:
            if money >= 5000:
                print("スケートにいく")
            else:
                print("雪だるまつく~ろ~♪")
    else:
        if money >= 5000:
            print("スポーツジムにいく")
        else:
            print("ランニングにいく")
else:
    if money >= 5000:
        print("デパートに買い物に行く")
    else:
        print("スーパーに買い物にいく")
【出力結果】
スケートにいく

正直、私はわかりにくくてしょうがないです。このコードをelif文を用いて書き換えてみます。

if、elif、elseを用いてわかりやすく

if-elseelifがある場合には、ifelseの間に書かれます。また、優先順位は次のようになります。

①最初のifが評価されます。Trueの場合、if文のブロックの内容が実行されます。Falseの場合、elifが評価されます。

②最初のif文で条件に合わなかった(Falseの)場合に、次にelif文が評価されます。elif文が複数ある場合は上から順番に評価されていき、どこかのelif文がTrueの評価を返したら、そのelif文のブロックの内容が実行され、それ以降のelif文は無視されます。

elif文がFalseを返す限り、上から順番にelif文が評価されていきます。

④どのelif文もTrueを返さなかったら、最後にelse文のブロックが実行されます。

それでは先程のコードをelifを用いて書き換えてみましょう。

Python
tomorrow = "雪"
money = 6000
if tomorrow == "晴れ":
    if money >= 5000:
        print("デパートに買い物にいく")
    else:
        print("スーパーに買い物にいく")
elif tomorrow == "曇り":
    if money >= 5000:
        print("スポーツジムにいく")
    else:
        print("ランニングにいく")
elif tomorrow == "雨":
    if money >= 5000:
        print("映画館で映画をみる")
    else:
        print("家で映画をみる")
else:
    if money >= 5000:
        print("スケートにいく")
    else:
        print("雪だるまつく~ろ~♪"
        
【出力結果】
スケートにいく

どうでしょう。

elifの中にif文があって(晴れの時はif文の入れ子)、入れ子なのは避けられませんでしたが、各天候によって分けられているので、「晴れの時はここのブロックだけを見ればいいんだなぁ」とか「雨の時はここのブロックだけ見ればいいんだなぁ」とグッと見やすくなっていないでしょうか?

このelifを用いた可読性のアップはメンテナンス(改変)のし易さにも直結し、不要なバグの発生も抑えられますので、もしif文の入れ子をする必要がある場合、elifを用いた検討をオススメします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次