条件分岐

条件によって処理をしたり、しなかったりするには、if文を使う。


    if文の書式

    if文の後、インデントした2行目から同じインデントが終わるまでが処理。真偽値(条件式)がTrueなら実行される。

    if 条件式:
      処理 # 条件式がTrueなら実行
    # インデント終了までがif文の処理
    

    条件が成立しない場合の処理を追加するなら、else:を使う。

    if 条件式:
      処理 # 条件式がTrueなら実行
    else:
      処理 # 条件式がFalseなら実行
    

    条件を複数用意して順番に判断していく場合は、elifを使う。いったん条件が成立したら、それ以降の条件は判断せずif文の終了となる。

    if 条件式1:
      処理 # 条件式1がTrueなら実行し、if文から抜ける
    elif 条件式2:
      処理 # 条件式2がTrueなら実行し、if文から抜ける
    else:
      処理 # どの条件式もFalseなら実行
    

    if文の例

    例として閏年の判定をif文でしている。

    # プログラム終了はCtrl+c
    while True: # 判定を繰り返す
      西暦 = int(input('西暦> ')) # 入力を整数に変換
    
      if 西暦 % 400 == 0: # 400で割り切れる
        print("閏年")
      elif 西暦 % 100 == 0: # 100で割り切れる
        print("平年")
      elif 西暦 % 4 == 0: # 4で割り切れる
        print("閏年")
      else:
        print("平年")
    

    同じことを条件をまとめてやるなら、

    while True:
      西暦 = int(input('西暦> ')) # 入力を整数に変換
    
      if 西暦 % 400 == 0 or ( 西暦 % 100 != 0 and 西暦 % 4 == 0):
        print("閏年")
      else:
        print("平年")
    

    オブジェクトそのものを条件式に使うケース

    オブジェクトそのものも真偽値判定に使える。下記は''(空文字)がFalseになることを利用して、文字入力を求めるもの。

    while True:
      入力 = input('空文字禁止> ')
    
      if 入力:
        break
    print(入力)