第8章 条件処理

8.5 ネストしたif文

 プログラミングにおいてネストとは、処理の中にさらに制御文を含める「入れ子」構造のことを言います。if文のネストについて、基本となる構文から解説していきます。

8.5.1 ネストしたif文の基本構文

ネストしたif文の基本構文は下記のように、if文の中にif文が記述された形になります。

書式:ネストしたif基本構文1

 今回の場合、まず条件式Aが評価され、もし条件が成立した場合、処理①が実行されます。次に条件式Bが評価され、条件が成立した場合処理②を行う、ということになります。
 上記のネストしたif文の処理の流れをフローチャートにすると、図 8.5.1.1のようになります。

図 8.5.1.1 : ネストした基本構文1のフローチャート

 条件式Aのみ当てはまった場合は処理①のみ実行され、条件式A と条件式Bのどちらも成立した場合は、処理①に加えて処理②が実行されます。
 入れ子の条件式の処理内容が記載されたブロックは、元の条件式のブロックよりもさらにインデントする必要があります。

図 8.5.1.2:入れ子がある場合の条件式のインデント

書式:ネストしたif基本構文2

 今回の場合、まず条件式Aが評価され、もし条件が成立した場合は処理①が実行されます。条件式Aが成立しなかった場合、処理②が実行され、さらに条件式Bが評価されます。条件式Bも成立した場合のみ処理③を行う、ということになります。
 上記のネストしたif文の処理の流れをフローチャートにすると、図 8.5.1.3のようになります。

図 8.5.1.3 : ネストしたif基本構文2

 ifブロックの中だけではなくelseブロックの中にも条件文はネストできます。今回、構文としては紹介していませんがelse ifブロックの中にも条件文を記述することができます。

8.5.2 ネストしたif文内の条件が全て成立するプログラム

ネストしたif文内の条件式が成立して、内側にあるifブロック内のメッセージが出力されることを確認します。

ソース・フォルダ:/Desktop/Python超入門テキスト
ファイル名    :第8章.ipynb
アクセスURL   :http://localhost:8888/notebooks/Desktop/Python超入門テキスト/第8章.ipynb

➢ 第8章.ipynb/8.5.2 ネストしたif文内の条件が全て成立するプログラム

    
    num = 7
    
    print(‘*****if文の判定開始*****’)
    
    if num >= 0 :
        print(‘変数numは0以上。’)
        if num <= 10:
            print(‘変数numは10以下。’)
        else :
            print(‘変数numは10より大きい。’)
    
    print(‘*****if文の判定終了*****’)
    
    
	

実行結果

解説
 このサンプルプログラムでは、2行目で変数aに7を代入しています。

 6行目のif文で「変数numが0以上。」という条件が成立した場合、7行目で「変数numは0以上。」というメッセージを出力します。次に8行目のif文が評価され、「変数numが10以下。」なら9行目のメッセージが出力され、成立しなければ11行目のメッセージが出力されます。今回変数numには7が代入されていますので、条件式「num>=0」も「num<=10」も成立するため、9行目の処理が実行されます。

 このサンプルプログラムのフローチャートは図 8.5.2.1に示します。(ここでは、4、13行目は省略します。)

図 8.5.2.1 :当プログラムのフローチャート


NEXT>> 8.6 if文について