前回は条件式を複数組み合わせて複数な条件分岐を行う方法について確認しました。今回は条件分岐にて処理されてきたルートに対してさらに条件を課す方法について確認します。
if文のネストについて
ネストとは入れ子の事です。要はマトリョーシカみたいにif文の中にif文がある状態です。使用場面は様々ありますが例えば、コロナで陽性だと診断された人の中で、本当に陽性だった人を条件分岐で定義したい場合に利用できます。陽性と診断された人(条件式①)が大きな集合で存在し、その中に実際に陽性だった人(条件②)が存在し、これを条件分岐で表現するイメージです。図に起こしてみるとこのような感じでしょうか。

上の赤い部分の人を抽出したいときにif文をネストさせて処理を流します。
if文のネストの書き方
それでは書き方について確認します。ネストさせる場合はブロックの中にブロックを作るので2重の時は、中のブロックはインデントを2つ分下げる必要があります。

書き方については特段難しいことはないでしょう。ただ、ネストが大きくなるとどのブロックがどこにかかっているのかが見づらくなるので、一見して見やすいようにコードを書くことに注意しましょう。
ネストしたif文の例
では、実際のプログラムを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 |
slot = [7,7,7] if slot[0] == slot[1]: print("きてます…") if slot[0] == slot[2]: print("確定演出!!") if 7 in slot: print("jackpot!!!") else: print("おしい・・・!") else: print("残念。。。") |
上記はパチンコを想定して実装したもので、全部同じものがそろったら確定演出を出し、その数値が7だったらjackpotを出すというものです。パチンコをやったことないのでよく知りませんがイメージはつきやすいかと思いますし、実際こんな感じで内部でプログラム組まれてるんじゃないかと想像できますよね。
上記で注目してほしいのはif文の処理の流れです。並列の関係にあれば一方のルートに処理が流れた場合は、もう一方の処理はスキップされますが、中にifブロックがある場合は、ブロック中にある処理を経てからさらに、条件を判定します。

リストの中の一番最後のリストを7以外の数値にすると、「来てます…」「おしい・・・!」となるはずです。こんな感じで、プログラムの中身を弄って遊んでみてください。
今回はここまでです。
お疲れ様でした。
コメント