Pythonプログラミング初心者に向けて、elifを用いた条件分岐について解説します。
これまで、if文やelse文を使った条件分岐について勉強してきました!
今回の「elif」は「else」と「if」の両方に似てるように思いますが..
ごまこはいつもカンが冴えてますね!
「elif」は「else」と「if」を組み合わせた造語で、if文で使った条件式を複数使いたい場合に使うんですよ!
今回は、これまでのif文やelse文のさらに応用となるelif文について解説していきます。
elif文の基本
elif文もelse文と同様に、if文とセットで用いられます。
以下のように使われます。
if 条件式①:
条件①を満たしたときの処理内容
・・・・
elif 条件式➁:
条件➁を満たしたときの処理内容
・・・・
前半のif文の部分は以前学んだif文による条件分岐と全く同じです。
今回、新たに学ぶのは後半の「elif 条件式➁:」の部分です。
「elif」は「else」と「if」を組み合わせた造語で、「そうでなければ、もし..ならば」といった意味です。
つまり、if文の「条件式①」を元に条件を満たしていなかった場合に、elif文の「条件式➁」の条件を満たしていれば「条件➁を満たしたときの処理内容」が実行されます。
まとめると、
・条件式①を満たしていれば、if文の「条件①を満たしたときの処理内容」を実行
・条件式①を満たしておらず条件式➁を満たしていればelif文の「条件➁を満たしたときの処理内容」を実行
といったように、複数の条件によって処理の分岐ができるのです。
「elif」の後ろの「: (コロン)」もよく忘れるので注意してください!
コロン・改行の後はキーボードの[TAB]ボタン1回分(または[Space]ボタン4回分)のインデント(字下げ)を行います。
if文やelse文と同様にJupyter Notebookなどの実行環境だと、コロン・改行とすると自動でインデントされますが、if文とelif文のインデントは必ず合わせるようにしてください。
また、elif文は以下のように複数のelif文をつなげていくことで、より多くの条件での処理分岐も可能です。
if 条件式①:
条件①を満たしたときの処理内容
・・・・
elif 条件式➁:
条件➁を満たしたときの処理内容
・・・・
elif 条件式③:
条件③を満たしたときの処理内容
・・・・
elif 条件式④:
条件④を満たしたときの処理内容
・・・・
#elifはいくつでもつなげていくことができます。
elif文の使用例
使用例1
それでは、実際に簡単なelif文を用いたプログラムを書いてみましょう。
# 変数animalに「cat」を代入
animal = "cat"
#条件式① 変数animalが"seal"と同じならば..
if animal == "seal":
print("アザラシは可愛い!")
#条件式➁ 変数animalが"cat"と同じならば..
elif animal == "cat":
print("ネコも可愛い!")
#実行結果 ネコも可愛い!
「if 条件式①:」における条件式①は「animal=="seal"」となります。
変数animalには"cat"を代入しているので、条件式は「False」となります。
このため、if文の条件式①は満たされないので、if文は実行されません。
次に、「elif 条件式➁:」における条件式➁は「animal=="cat"」となります。
変数animalには"cat"を代入しているので、条件式は「True」となります。
このため、elif文の条件式➁が満たされるので、elif文が実行されます。
よって、elif文内の処理「ネコも可愛い!」が出力されます。
このコードで、変数animalを「dog」に変更して、elif文を増やして実行してみます。
プログラムの意味が読み解けるでしょうか。
# 変数animalに「dog」を代入
animal = "dog"
#条件式① 変数animalが"seal"と同じならば..
if animal == "seal":
print("アザラシは可愛い!")
#条件式➁ 変数animalが"cat"と同じならば..
elif animal == "cat":
print("ネコも可愛い!")
#条件式③ 変数animalが"dog"と同じならば..
elif animal == "dog":
print("イヌはとっても可愛い!")
#実行結果 イヌはとっても可愛い!
今回は変数animalに"dog"を代入しているので、条件式③の「animal=="dog"」が満たされます。
このため、条件③のelif文内の「イヌはとっても可愛い!」が出力されます。
elif文を使っていくつもの条件で処理を分岐できるようになりました!
別の使用例を見てさらにイメージをつかんでいきましょう!
使用例2
下のプログラムでは変数の数値によって、elif文で処理を条件分岐しています。
# 変数numに0を代入
num = 0
#条件式① 変数numが0より大きかったら..
if num > 0:
print("変数numは正の値です。")
#条件式➁ 変数numが0より小さかったら..
elif num < 0:
print("変数numは負の値です!")
#条件式③ 変数numが0だったら..
elif num == 0:
print("変数numはゼロです!!")
#インデントしていないので、if文・elif文に関係なく実行
print("***処理を終了します。***")
#実行結果
# 変数numはゼロです!!
# ***処理を終了します。***
変数num=0なので、条件式①➁は満たされず、条件式③で「True」となります。
そのため、条件式①のif文・条件式➁のelif文は実行されず、条件式③のelif文の処理が実行されるので、「変数numはゼロです!!」と出力されます。
続く、「print("***処理を終了します。***")」はインデントされていないので、if文・elif文の条件に関わらず実行されます。
したがって、実行結果は「変数numはゼロです!!」「***処理を終了します。***」が出力されます。
複雑な条件分岐を書くことができるようになりました!
難しいけど、パソコンに判断をしてもらってるからプログラミングしてる感じが強くなってきました!
プログラム全体を見渡せないと理解できないようになってきてると思うけど、慣れてくるとより一層プログラムが面白くなってきますよ!!
理解度が上がっていくまでは辛抱して頑張ってみてほしいです!
じゃあ、確認問題を解いてもっと理解を深めていきましょう!
それでは、これまでの内容を以下の問題でおさらいしてみましょう!
確認問題
①変数numに整数値20を代入して変数を作成しましょう。
➁numの値が50以上の時に「numの値は50以上です!!」と出力するif文を書きましょう。
③numの値が15以上の時に「numの値は15以上です!」と出力するelif文を書きましょう。
④numの値が15より小さい時に「numの値は15より小さいです。」と出力するelif文を書きましょう。
⑤上記の問題➁~④の条件に関わらず、最後に「numの判定は終了しました。」と出力しましょう。
確認問題 解答
以下が解答例です。わからなかった場合は実際に自分で書いて理解を深めましょう。
#①変数numに整数値20を代入して変数を作成
num = 20
#➁numの値が50以上の時に
#「numの値は50以上です!!」と出力するif文
if num >= 50:
print("numの値は50以上です!!")
#③numの値が15以上の時に
#「numの値は15以上です!」と出力するelif文
elif num >= 15:
print("numの値は15以上です!")
#④numの値が15より小さい時に
#「numの値は15より小さいです。」と出力するelif文
elif num < 15:
print("numの値は15より小さいです。")
#⑤問題➁~④に関わらず、「numの判定は終了しました。」と出力
# インデントしていないのでif~else文に関わらず出力
print("numの判定は終了しました。")
また、変数numの値を変更して動作を確認してみましょう!
まとめ
このページではelif文による条件分岐を説明していきました。
複数の条件を決めて条件分岐を行うプログラムではelifはなくてはならない要素だと感じます。
また、インデント箇所が増えるので様々なエラーとも遭遇したのではないかと思います。
まずはプログラムを実際に打つことで手と目で慣れていけば、インデントのずれを違和感として感じられるようになります。
このページを元に基礎をきちんと理解していただいた上で、入力に慣れることを意識していただけたらと思います。
このサイトの記事一覧へは以下へアクセス!
コメント