見出し画像

[Python]複数の条件分岐を行う(if elif else)

 以前の記事で、OpneWeatherMap APIとLINE Notifyを使って気圧変化を通知する、を自動運用しています。とても便利に使っているのですが、人というのは飽きっぽいものです。

「メッセージがいつも同じでつまらない」

と言い出した。そこで、少し変化をつけました。

 複数の条件分岐を行うのに、このような仕組みを用いました。
  if 条件1:
実行したいこと1
elif 条件2:
実行したいこと2
else:
実行したいこと3

 他の言語に慣れている私は、else if と思いきや、Python では elif が使えます。条件1に合うときは実行したいこと1を実行。条件2に合うときは実行したいこと2、それ以外のときは実行したいこと3 を実行します。

 以前の記事からの修正点のみ記載します。

for i, diff_kiatsu in enumerate(df[1].diff()):
    if i >= 16:
        msg_push = "この2日間の気圧情報でした〜(メッセージランダムお試し)"
        send_line(msg_push)
        break
    else:
        sabun = diff_kiatsu
        if sabun >= 2:
            j = i % 3
            if j == 0:
                msg_push = df[0][i-1] + "から気圧急上昇、お薬飲みな〜"
                send_line(msg_push)
                print("msg_push=", msg_push)
            elif j == 1:
                msg_push = df[0][i-1] + "から気圧急上昇、お薬持ったか?"
                send_line(msg_push)
                print("msg_push=", msg_push)
            else:
                msg_push = df[0][i-1] + "から気圧急上昇、我慢するなよ〜"
                send_line(msg_push)
                print("msg_push=", msg_push)

【ざっくり解説】(修正点は9行目以降。それ以外は以前の記事を参照)
・9行目:変数 j に、i を 3 で割った余りを入れる。結果、j には 0 , 1 , 2 のいずれかの値が入ることになる。
・10行目:j が 0 の時、11行目〜13行目を実行する。
・11行目:LINE通知するメッセージを設定する。
・12行目:11行目で設定したメッセージをLINEで通知する。
・13行目:動作確認のため12行目と同じ内容をコンソールに表示する。
・14行目:j が 1 の時、15行目〜17行目を実行する。
・15〜17行目:11行目〜13行目と同じ動き。
・18行目:それ以外の時、結果として j が 2の時、19行目〜21行目を実行する。
・19〜21行目:11行目〜13行目と同じ動き。

 これにより、LINE 通知するメッセージに変化を持たせることができました。この例は、偶然にも、定義した 3 パターン全てが表示されてます。

複数の条件分岐によりメッセージ内容を変えました

 この仕組みを工夫すれば、こっそりレアメッセージを入れるといった楽しみ方もできますね。

この記事が気に入ったらサポートをしてみませんか?