Pythonプログラミング初心者に向けて、これまで学んできた条件分岐の集大成として二重の条件分岐について解説します。
これまで、たくさん条件分岐の勉強をしてきました!
きっとバッチリ条件分岐を扱えるようになりました!!
これまで本当によく勉強してきました~!
最後に二重の条件分岐の説明していきますね!
二重の条件分岐を理解できるとプログラマーの頭にかなりなっていきます!
しっかり身に着けてほしいですね!
今回学んでいく「二重の条件分岐」は条件分岐の集大成です!
まずは「二重の条件分岐の基本」について学んでいきたいと思います。
二重の条件分岐の基本
二重の条件分岐は「条件分岐をしたあとに、さらに別の条件で条件分岐を行うこと」です。
簡単にいうと、if文の中でif文を用いるイメージです。
書き方の基本は以下のようになります。
if 条件式①:
if 条件式:
・・・
elif 条件式:
・・・
else:
・・・
elif 条件式➁:
if 条件式:
・・・
・・・
else:
if 条件式:
・・・
・・・
上記のようにif文の中にif・elif・else文を記述することで、「条件式①を満たした場合に、さらに別の条件式で条件分岐」を行うことができます。
elif文やelse文内にさらにif・elif・else文を書くこともできます。
二重の条件分岐を行う場合、内側の条件分岐はさらにインデント(字下げ)します。
それでは早速、二重の条件分岐の使用例を見てみましょう。
二重の条件分岐の使用例1
以下のプログラムは最初に変数animalの文字列に一致するかで条件分岐して、その後変数numの整数値で条件分岐しています。
animal = "seal"
num = 2
if animal == "seal":
if num == 1:
print("アザラシ1匹")
elif num == 2:
print("アザラシ2匹")
elif animal == "cat":
if num == 1:
print("ネコ1匹")
elif num == 2:
print("ネコ2匹")
#実行結果 アザラシ2匹
最初に変数animalに「"seal"」「"cat"」のいずれかが入っているか確認しています。
「if(animal == "seal"):」の条件を満たすので、if文内の処理が実行されます。
if文の内側ではさらに変数numに「1」「2」のいずれかが入っているか確認しています。
「elif(num == 2):」の条件を満たすので、elif文内の処理が実行されます。
したがって、内側のelif文内の処理が実行され、「アザラシ2匹」と出力されます。
プログラムの意味が読み解けたら、変数animalやnumの値を変更して実行してみましょう!
プログラムの見た目にびっくりするけど、これまでに勉強したことを順番に読み取っていくと意味が理解できてきました!!
これまでの勉強が役に立ってますね!!
きちんと理解できた人は続いてもう一つ例を見て理解を深めていきましょう!
二重の条件分岐の使用例2
以下のプログラムは変数animalの文字列に一致するかで条件分岐して、その後変数numの値で条件分岐しています。
animal = "seal"
num = 17
if animal == "seal":
print("**アザラシを数えます。**")
if num == 1:
print("アザラシが1匹います!")
elif num >= 2:
print("アザラシが複数います!!")
print("**数え終わりました**")
else:
print("処理を終了します。")
#実行結果
# **アザラシを数えます。**
# アザラシが複数います!!
# **数え終わりました**
実行結果が異なる場合はインデントの位置を確認しましょう!
プログラムの説明をします。
最初に変数animalに「"seal"
」が入っているか確認しています。
「if(animal == "seal"):
」の条件を満たすので、if文内の処理が実行されます。
if文の内側ではまず、「print("**アザラシを数えます。**")
」が実行されるので、「**アザラシを数えます。**」が出力されます。
その後、内側の条件分岐で、変数numが「1」か「2以上」のいずれかを確認しています。
「elif(num>=2):
」の条件を満たすので、elif文内の処理が実行されます。
したがって、内側のelif文内の処理が実行され、「アザラシが複数います!!」と出力されます。
そして、内側の条件分岐を抜けたら、内側のif・elif文の外にある「print("**数え終わりました**")
」が実行されるので、「**数え終わりました**」が出力されます。
プログラムの意味が読み解けたら、変数animalやnumの値を変更して実行してみましょう!
print関数のインデントの位置に注意したらなんとか上手く動きました!!
解説を読んだらprint関数がどういう流れで実行されているのかも理解できました!
それで充分良く理解できていますね!!
ひとまずきちんとプログラムが実行できて、解説を読んで理解できたらOKですよ!
最後に、確認問題を解いてもっと理解を深めていきましょう!
それでは、これまでの内容を以下の問題でおさらいしてみましょう!
確認問題
num=6として変数を生成し、numの値によって以下のように条件分岐するプログラムを書いてみましょう。
①二重の条件分岐の外側のif・elif・else文を書きます。条件は以下です。
(1)numの値が正の値の時、「正の値です」と出力します。
(2)numの値が負の値の時、「負の値です」と出力します。
(3)それ以外の時、「正負の数値以外です」と出力します。
➁二重の条件分岐の内側のif・elif・else文を書きます。
上記①の(1)の「numが正の値」の場合に、さらに条件分岐を追加してください。
・numが偶数の時、「偶数です」と出力します。
・numが奇数の時、「奇数です」と出力します。
・それ以外の時、「整数ではありません」と出力します。
※ヒント
偶数は2で割った時に余りが0、奇数は2で割った時に余りが1となる数です!
割り算についての数値演算子の使い方を忘れてしまった方は以下のリンクを参照ください。
今回は①の段階の回答もあるから、途中で分からなくなったら下の解答で確認しながらでもがんばって進めてみてほしいです!
確認問題 解答
①の段階の解答例です。わからなかった場合も実際に自分で書いて理解を深めましょう。
"""
①二重の条件分岐の外側のif・elif・else文を書きます。条件は以下です。
(1)numの値が正の値の時、「正の値です」と出力します。
(2)numの値が負の値の時、「負の値です」と出力します。
(3)それ以外の時、「正負の数値以外です」と出力します。
"""
num = 6
if num > 0:
print("正の値です")
elif num < 0:
print("負の値です")
else:
print("正負の数値以外です")
#実行結果 正の値です
➁までのプログラム実装の回答例です。
"""
「numが正の値」の場合に、さらに条件分岐を追加してください。
・numが偶数の時、「偶数です」と出力する。
・numが奇数の時、「奇数です」と出力する。
・それ以外の時、「整数ではありません」と出力します。
"""
num = 6
if num > 0:
print("正の値です")
if(num % 2 == 0):
print("偶数です")
elif(num % 2 == 1):
print("奇数です")
else:
print("整数ではありません")
elif num < 0:
print("負の値です")
else:
print("正負の数値以外です")
#実行結果
# 正の値です
# 偶数です
エラーなく実行できたら、変数numの値を変更して動作を確認してみましょう!
まとめ
今回取り扱った「二重の条件分岐」は著者の経験上、プログラム初心者にとってかなり混乱する内容だろうと感じます。
ただし、「二重の条件分岐」は二重に条件分岐を書いているコードであるだけで、新しい考え方は必要ありません!
これまで学んできたif・elif・elseの使い方をきちんと理解した上で、一つ一つかみ砕いて理解していけば、必ず理解していくことができると思います。
プログラマーにまた一歩近づくためにも、わからない部分は繰り返し読んでコードを書き、理解を深めていただけたらと思います。
このサイトの記事一覧へは以下へアクセス!
コメント