【Day7】Python入門 3.4:分岐構文のバリエーション

目次

要約

本日は、Pythonで以下を学びました。

3種類のif文

if-else構文

ifのみの構文

if-elif構文

if文のネスト

#if文をネストさせてみましょう
print('すべての質問にyesまたはnoで答えてください>>')

nurse_life = input('将来、看護師になりますか?')

#----看護師になりたい場合----#
if nurse_life == 'yes':
    print('あなたは将来、看護師になります!')

#----看護師にならない場合----#
elif nurse_life == 'no':
    public_health_nurse = input('あなたは将来、保健師になりますか?')

    #----保健師になる場合----#
    if public_health_nurse == 'yes':
        print('あなたは将来、保健師になります!')
    
    elif public_health_nurse == 'no':
        data_engineer = input('将来、データエンジニアになりますか?')

        #----データエンジニアになる場合---#
        if data_engineer == 'yes':
            print('あなたは将来、データエンジニアになります!')
        
        #----それ以外の場合---#
        else:
            print('将来が読めません・・・')

    else:
        print('yesまたはnoで正しく答えてください')        #ここで質問にループさせる必要あり。

else:
    print('yesまたはnoで正しく答えてください')        #ここで質問にループさせる必要あり。

はじめに

前回は条件式について学びました。

​今回は、分岐構文のバリエーションについて学習します。


分岐構文のバリエーション

3種類のif文

if文には3つのバリエーションがあります

if-else構文

ifのみの構文

if-elif構文

これまでは基本形のif-else構文を学んできました。

残りの2つは条件式の結果がFalseの場合に、if-else構文とは違った処理の流れになります


if-else 構文

基本形となるif-else構文は、条件式が成立したときと、成立しなかったときで処理を分岐できます。

if-else 構文

if 条件式:
 条件式が成立したときの処理

else :
 条件式が成立しなかったときの処理


ifのみの構文

条件式が成立しなかったときには何もしない場合、elseブロックは空になります。

このような場合には、elseブロックを省略できます

ifのみの構文

if 条件式:
 条件式が成立したときの処理

#ifのみの構文を作成していきます
license = ['看護師' , '保健師' , '医療情報技師' , '第1種滅菌技師']
print(f'持っている資格は {license} です!')

if '看護師' in license:
    print(f'あら、看護師さんなんですね!')

看護師あるあるですね!!

ちなみに、Pythonでは空のブロックを禁じているため、ifのみの構文を使用せずに、何も処理しない空のelseブロックを書くとエラーになります

あえてブロックの中を空にしたい場合は、passとだけ書いて、何もしないことを表明する必要があります。


if-elif 構文

条件式が成立しなかったときには別の条件式で判定した場合は、

ifブロックのあとにelifブロックを追加したif-elif構文を使用します

elifとは「else if」「もしAならば~、そうでなくBならば~」を省略したものです

elifの数には制限はなく条件式を先頭から順に判定していき、最初にTrueに判定された条件式のブロックが実行されます

また、すべての条件式がFalseだったときに何もする必要がなければ、最後のelseブロックを省略できます。

if-elif 構文

if 条件式1:
  条件式1が成立したときの処理

elif 条件式2:
  条件式1が成立せず、条件式2が成立したときの処理

elif 条件式n:
  上記の条件式がすべて成立せず、条件式nが成立したときの処理

else:
  すべての条件式が成立しなかったときの処理

※else ブロックを省略するときは、else: 自体を書かない。


if文のネスト

if文のブロックに、また別のif文を入れることもできます

このような多重構造を、コンテナのときと同様に、ネストや入れ子といいます。

if文をネストすると、複雑な分岐を実現できます。

if文をネストする場合は、意図とインデントが合致しているか、注意が必要です

例文を使って、if文をネストさせてみましょう。

#if文をネストさせてみましょう
print('すべての質問にyesまたはnoで答えてください>>')

nurse_life = input('将来、看護師になりますか?')

#----看護師になりたい場合----#
if nurse_life == 'yes':
    print('あなたは将来、看護師になります!')

#----看護師にならない場合----#
elif nurse_life == 'no':
    public_health_nurse = input('あなたは将来、保健師になりますか?')

    #----保健師になる場合----#
    if public_health_nurse == 'yes':
        print('あなたは将来、保健師になります!')
    
    elif public_health_nurse == 'no':
        data_engineer = input('将来、データエンジニアになりますか?')

        #----データエンジニアになる場合---#
        if data_engineer == 'yes':
            print('あなたは将来、データエンジニアになります!')
        
        #----それ以外の場合---#
        else:
            print('将来が読めません・・・')

    else:
        print('yesまたはnoで正しく答えてください')        #ここで質問にループさせる必要あり。

else:
    print('yesまたはnoで正しく答えてください')        #ここで質問にループさせる必要あり。

if文をネストさせることができました!
エラーがでないように、想定していない入力に対するprintも一部入れてます!


まとめ

本日は、Pythonで以下を学びました。

3種類のif文

if-else構文

ifのみの構文

if-elif構文

if文のネスト

#if文をネストさせてみましょう
print('すべての質問にyesまたはnoで答えてください>>')

nurse_life = input('将来、看護師になりますか?')

#----看護師になりたい場合----#
if nurse_life == 'yes':
    print('あなたは将来、看護師になります!')

#----看護師にならない場合----#
elif nurse_life == 'no':
    public_health_nurse = input('あなたは将来、保健師になりますか?')

    #----保健師になる場合----#
    if public_health_nurse == 'yes':
        print('あなたは将来、保健師になります!')
    
    elif public_health_nurse == 'no':
        data_engineer = input('将来、データエンジニアになりますか?')

        #----データエンジニアになる場合---#
        if data_engineer == 'yes':
            print('あなたは将来、データエンジニアになります!')
        
        #----それ以外の場合---#
        else:
            print('将来が読めません・・・')

    else:
        print('yesまたはnoで正しく答えてください')        #ここで質問にループさせる必要あり。

else:
    print('yesまたはnoで正しく答えてください')        #ここで質問にループさせる必要あり。

次回は「繰り返し」を扱っていきます。


ifを使って多分岐するプログラミングが書けるようになりました!

目次