Pythonプログラミング初心者に向けて、if~elseを用いた条件分岐について解説します。
前回、if文による条件分岐について勉強してきました!
今回の「if~else」もif文に似たようなものなんですか?
その通りです!
if文は条件を満たした場合の動作を書くことができたけど、「if~else」は「条件を満たした場合の動作」と「条件を満たさなかった場合の動作」を書くことができるんです!
今回は、前回のif文による条件分岐の応用となるif~else文について解説していきます。
if~else文の基本
if~else文は以下のように使われます。
if 条件式:
条件を満たしたときの処理内容
・・・・
else:
条件を満たさないときの処理内容
・・・・
前半のif文の部分は前回学んだif文による条件分岐と全く同じです。
「条件式」を元に条件を満たしていれば、「条件を満たしたときの処理内容」が実行されます。
今回、新たに学ぶのは後半の「else:」の部分です。
「else」は翻訳すると「そうでなければ..」といった意味です。
つまり、if文の「条件式」を元に条件を満たしていなかった場合に、else文以下の「条件を満たさないときの処理内容」が実行されます。
まとめると、条件式について、
・条件を満たしていればif文の処理を実行
・条件を満たしていなければelse文の処理を実行
といったように、より本格的に条件に合わせた処理の分岐ができるのです。
「else」の後ろの「: (コロン)」もよく忘れるので注意してください!
コロン・改行の後はキーボードの[TAB]ボタン1回分(または[Space]ボタン4回分)のインデント(字下げ)を行います。
if文と同様にJupyter Notebookなどの実行環境だと、コロン・改行とすると自動でインデントされますが、if文とelse文のインデントは必ず合わせるようにしてください。
if~else文の使用例
使用例1
それでは、実際に簡単なif~else文を書いてみましょう。
# 変数animalに「cat」を代入
animal = "cat"
#変数animalが"seal"と同じならば..
if animal == "seal":
#条件を満たしている場合は実行
print("アザラシは可愛い!")
else:
#条件を満たしていない場合は実行
print("アザラシ以外もみんな可愛い!")
#実行結果 アザラシ以外もみんな可愛い!
「if(条件式):」における条件式は「animal=="seal"」となります。
今回は変数animalに"cat"を代入しているので、条件式は「False」となります。
このため、if文の条件式は満たされないので、if文は実行されずelse文に処理が移ります。
そのため、else文内の処理が実行され「アザラシ以外もみんな可愛い!」が出力されます。
同じコードで、変数animalを「seal」に変更して実行してみます。
# 変数animalに「seal」を代入
animal = "seal"
#変数animalが"seal"と同じならば..
if animal == "seal":
#条件を満たしている場合は実行
print("アザラシは可愛い!")
else:
#条件を満たしていない場合は実行
print("アザラシ以外もみんな可愛い!")
#実行結果 アザラシは可愛い!
今回は変数animalに"seal"を代入しているので、条件式は「True」となります。
このため、if文の条件式は満たされるので、if文が実行されますがelse文は実行されません。
そのため、if文内の処理が実行され「アザラシは可愛い!」が出力されます。
if~else文にすることで2つの処理に分岐できるようになりました!
もう少し別の例を見てイメージをつかんでいきます!
使用例2
下のプログラムでは変数の数値によって、if~else文で処理を条件分岐しています。
プログラムの意味を読み解くことができるでしょうか?
# 変数numに-7を代入
num = -7
#変数numが0より大きいか
if num > 0:
#条件を満たしていたら実行
print("変数numは正の値です。")
else:
#条件を満たしていなかったら実行
print("変数numは正の値ではありません!")
#インデントしていないので、if~else文に関係なく実行
print("***処理を終了します。***")
#実行結果
# 変数numは正の値ではありません!
# ***処理を終了します。***
「if(条件式):」の条件式「num>0」において、num=-7より条件式は「False」となります。
そのため、if文の処理は実行されず、else文の処理が実行されるので、「変数numは正の値ではありません!」と出力されます。
続く、「print("***処理を終了します。***")」はインデントされていないので、if~else文の条件に関わらず実行されます。
したがって、実行結果は「変数numは正の値ではありません!」「***処理を終了します。***」が出力されます。
if~else文のプログラムの意味が分かってきました!
また前回のif文の解説と合わせて条件分岐のプログラムにも慣れてきました!
if~else文になって全体が複雑になってきましたね..
分からないところはしっかり復習して理解してほしいです!
それじゃあ、確認問題を解いてもっと理解を深めていきましょう!
それでは、これまでの内容を以下の問題でおさらいしてみましょう!
確認問題
①変数numに小数値2.5を代入して変数を作成しましょう。
➁以下の条件のif~else文を書きましょう。
・numの値が負だったら「numの値は負の値です」と出力するif文を書きましょう。
※ヒント 変数numが負となる条件式は「num<0」です。
・それ以外の場合、「numの値は負の数ではありません!」と出力するelse文を書きましょう。
③上記の問題➁の条件に関わらず、最後に「numの判定は終了しました。」と出力しましょう。
確認問題 解答
以下が解答例です。わからなかった場合は実際に自分で書いて理解を深めましょう。
#①変数numに小数値2.5を代入して変数を作成
num = 2.5
#➁if~else文を書きましょう。
#numの値が負だったら..
if num < 0:
#「numの値は負の値です」と出力
print("numの値は負の値です")
#それ以外の場合..
else:
#「numの値は負の数ではありません!」と出力
print("numの値は負の値です")
#③問題➁の条件に関わらず、「numの判定は終了しました。」と出力
# インデントしていないのでif~else文に関わらず出力
print("numの判定は終了しました。")
また、変数numの値を変更して動作を確認してみましょう!
まとめ
今日はif~else文による条件分岐を解説しました。
else文を用いることでif文の条件に合わない場合の処理を書くことができました。
if文のみを使う場合よりもいろいろな条件分岐ができるのではないかと想像が膨らんだのではないかと思います。
また、複雑なプログラムで予期せぬ事象が起こってしまった場合の処理をelse文でまとめて管理する方も多いと感じます。
みなさんもelse文も含めて条件分岐に慣れ親しんで様々なプログラムが書けるようになっていただければと思います!
このサイトの記事一覧へは以下へアクセス!
コメント