Pythonの条件分岐で迷わない!if文・elif文の条件式の順番の最適な書き方とは?

PRについて
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
Pythonの条件分岐で迷わない!if・elif文の条件式の順番の最適な書き方とは? 初心者向け
Pythonの条件分岐で迷わない!if・elif文の条件式の順番の最適な書き方とは?
スッキリわかるPython入門

Pythonプログラミング初心者に向けて、if・elifを用いた条件式の順番についての注意点を解説します。

ごまこ
ごまこ

前回、elif文を使った条件分岐について勉強してきました!
if文とelif文を組み合わせてプログラムを書いてみたけど、上手くいかないんです。

ごまお
ごまお

これまで扱ってきたif文とelif文を使えば、複雑な条件でも条件分岐が書けるます。
でも、書く内容も複雑になっていくし注意しないといけないことも多くて難しいですね..
今回はごまこの困りごとを元に注意点を学んでいきましょう!

それでは、今回はごまこの困りごとを解決しながら、if文・elif文について理解を深めていきましょう。

条件式の順番に注意!

ごまこは変数numの値によって、処理を条件分岐しようとしているようです。

まずはごまこの書いたプログラムを見てみましょう!

#変数numに整数値15を代入
num = 15

#numの値が0以上の場合
if num >= 0:  
    print("numの値は0以上です!")
#numの値が10以上の場合
elif num >= 10:
    print("numの値は10以上です!")
#numの値が20以上の場合
elif num >= 20:
    print("numの値は20以上です!")

#実行結果 numの値は0以上です!

numの値が0以上か、10以上か、20以上かで処理を分けたいようです。

しかし、num=15であるにも関わらず、「num>=10」の条件による処理「print("numの値は10以上です!")」が実行されません

最初のif文の「num>=0」の条件による処理「print("numの値は0以上です!")」が実行されてしまっています。

ごまお
ごまお

これはif・elif文の条件式の順番のせいで起こっていますね..
仕事でプログラミングをしていても失敗するタネになることがありますね!
解説していくから一緒に理解していってほしいです!

if・elif文を用いる場合は条件式が「True」となった場合の処理が実行されます。

原則として、「True」となった条件より後に記載したelif文の条件式は条件式の確認さえも実行されません

さきほどのプログラムを簡略化して詳しく説明していきます。

num = 15

if num >= 0:  
    #・・・
elif num >= 10:
    #・・・
elif num >= 20:
    #・・・

上記ではif・elif文以外の要素を省略しています。

最初のif文において「num>=0」という条件があります。

変数num=15なので、最初のif文の条件文が「True」となるので、最初のif文の処理が実行されます。

そして、さきほど述べたように、「True」となった条件より後に記載したelif文の条件式は条件式の確認さえも実行されません。

そのため、その後のelif文の処理は実行されないのです。

さきほどの簡略化したコードにコメントを記載すると以下のようになります。

num = 15

if num >= 0:
    #条件式が「True」となるので実行される!
    #・・・
#***if文の処理が実行されたので実行されない..***
elif num >= 10: 
    #・・・
elif num >= 20:
    #・・・

#***以下はif・elif文から抜けているので
# 処理があれば通常通り実行される!***
ごまこ
ごまこ

間違いの意味が理解できました!
if文・elif文を使う上で条件式についてとっても大事なことを学べました。
でも、思っている動作をさせようと思うとどうすれば良いんですか?

ごまお
ごまお

条件式の順番をうまく変えると解決できますよ!
さっきのプログラムの修正例を元に説明しましょう!

条件式の順番を考えた修正例

それでは例のプログラムを条件式の順番を考えて修正したプログラムを示します。

#変数numに整数値15を代入
num = 15

#numの値が20以上の場合
if num >= 20:
    print("numの値は20以上です!")
#numの値が10以上の場合
elif num >= 10:
    print("numの値は10以上です!")
#numの値が0以上の場合
elif num >= 0:
    print("numの値は0以上です!")

#実行結果 numの値は10以上です!

上記の場合、「num>=20」「num>=10」「num>=0」の順に条件式の確認が行われます。

簡略化すると以下のようになります。

num = 15

if num >= 20: #条件式は「False」で実行されない
    #・・・
elif num >= 10: #条件式は「True」で実行される
    #・・・
#***elif文の処理が実行されたので実行されない..***
elif num >= 0:
    #・・・

#***以下はif・elif文から抜けているので
# 処理があれば通常通り実行される!***

順番に条件式のチェックを行うと2つ目の条件式「num>=10」で「True」となり、狙い通り「numの値は10以上です!」が出力されました。

また、2つ目の条件式で「True」となるので以降のelif文は実行されません

ごまこ
ごまこ

やりました!
条件式の順番を工夫したら思った通りの条件分岐ができました!

ごまお
ごまお

条件式の順番をうまく変える工夫についても理解してもらえたみたいで良かったです!
if・elif文の条件式の配慮はとっても大事だから、この機会に理解を深めてほしいです!

まとめ

今回はif・elif文の条件式の順番の重要性について解説しました。

今回の例では短いプログラムを例に説明していきましたが、現場ではより複雑なプログラムを書くことになります。

複雑なプログラムを扱う際にも「どうして思ったように条件分岐できないのだろう..」といった状況に遭遇することはよくあると感じます。

そのような際には、まずは条件式の順序や条件が正しいかを確認していただくことからスタートしていただけたらと思います。

このサイトの記事一覧へは以下へアクセス!

Python2年生 デスクトップアプリ開発のしくみ
初心者向け
ゴマフリーダムをフォローする

コメント

達人に学ぶDB設計 徹底指南書

最短コースでわかる ディープラーニングの数学

あたらしい機械学習の教科書 第3版

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

タイトルとURLをコピーしました