8. if文とmatch文

8-1. if文の基本構文
 if文は条件式や値を評価して、それが真(ture, 1)ならばプログラムブロックを実行し、偽(false、0)ならばプログラムブロックを無視します。なお、真とは条件式が正しい、または値が1であることです。偽とは条件式が間違っている、または値が0であることです。if文の基本形はif-else型になります。その他に、elseを省略したif型、複数の条件を設定できるif-elif-…型とif-elif-…-else型があります。1つ目の条件をチェックしたあと、真ならば対応するプログラムブロックを実行してif文の処理を終了します。偽ならば次の条件をチェックして成立する条件式があれば、対応するプログラムブロックを実行してif文の処理を終了します。すべての条件式が成立しなかった場合(偽の場合)、elseが定義されていれば、対応するプログラムブロックを実行してif文を終了します。elseが定義されていない場合は、そのままif文を終了します。

▽サンプルプログラム8-1. if文の基本構文

a=1
if a == 1:
    print("条件式が真の場合")
else:
    print("条件式が偽の場合")
a=1
if a == 1:
    print("条件式が真の場合")
a=1
if a == 1:
    print("条件式1が真の場合")
elif a == 2:
    print("条件式2が真の場合")
a=1
if a == 1:
    print("条件式1が真の場合")
elif a == 2:
    print("条件式2が真の場合")
else:
    print("すべての条件式が偽の場合")
▼プログラミングセル8-1. packages = [] terminal = false

8-2. インデントの注意
 プログラムブロック部分の行頭のインデントがずれないように注意してください。

▽サンプルプログラム8-2. インデントの注意

a=1
if a == 1:
    print("条件式が真の場合")
    print("インデントがずれないように注意してください")
a=1
if a == 1:
    print("条件式が真の場合")
     print("インデントがずれないように注意してください") #エラー箇所
▼プログラミングセル8-2.

8-3. 条件式で使える比較演算子
 条件式には主に以下の比較演算子を使用します。比較演算子はXとYの2つの値を比較して、条件式が成立する場合(真の場合)はtrue、条件式が成立しない場合(偽の場合)はfalseを返します。trueの場合、対応するプログラムブロックを実行してif文を終了します。

演算子算術
X == YXはYと等しい / YはXと等しい
X != YXはYと異なる / YはXと異なる
X < YXはYより小さい / YはXより大きい
X > YXはYより大きい / YはXより小さい
X <= YXはY以下である / YはX以上である
X >= YXはY以上である / YはX以下である
X is YXはYと等しい / YはXと等しい
X is not YXはYと異なる / YはXと異なる
X in YXはYに含まれる(文字列・リスト・タプルが対象)
X not in YXはYに含まれない(文字列・リスト・タプルが対象)

▽サンプルプログラム8-3. 条件式で使える比較演算子

a=1
if a < 10:
    print("条件式が真の場合")
else:
    print("条件式が偽の場合")
▼プログラミングセル8-3.

8-4. if文の入れ子(ネスト)
 if文の中にif文を記述して入れ子(ネスト)の状態にできます。

▽サンプルプログラム8-4. if文の入れ子(ネスト)

a=80
if a <= 50:
    if a < 25:
        print("入力値が25より小さい場合")
    else:
        print("入力値が25以上50以下の場合")
else:
    if a < 75:
        print("入力値が50より大きく75より小さい場合")
    else:
        print("入力値が75以上の場合")
▼プログラミングセル8-4.

8-5. 論理演算子による条件式の並記
 論理演算子を利用することでif文の条件式を併記することができます。

論理演算子説明
and論理積(かつ)
or論理和(または)
not否定(~でない)

▽サンプルプログラム8-5. 論理演算子による条件式の並記

a=80
if a >= 25 and a <= 50:
    print("入力値が25以上50以下の場合")
else:
    print("その他の場合")
a=80
if a < 25 or a > 50:
    print("入力値が25より小さい、または50より大きい場合")
else:
    print("その他の場合")
▼プログラミングセル8-5.

8-6. 標準入力の値に対するif文
 input関数と組み合わせることで標準入力した値に対してif文の処理を行うことができます。

▽サンプルプログラム8-6. 標準入力の値に対するif文

a=int(input())
if(a%2):
    print("入力値は奇数である")
else:
    print("入力値は偶数である")
▼プログラミングセル8-6.

8-7. pass文
 処理は何も必要ないが、プログラムの構文上、何か書かなければいけないときはpass文を利用します。

▽サンプルプログラム8-7. pass文

a=int(input())
if(a%2):
    print("入力値は奇数である")
else:
    pass # 偶数のときは何もしない
▼プログラミングセル8-7.

8-8. match文の基本構造
 match文では、変数の値が指定した値と等しいかどうかを調べ、値ごとに対応する処理(case:)を設定して実行します。また、条件に合わなかったときの処理をアンダーバー( _ )で設定できます。この動作は、C言語などのswitch文と同じ動作になります。なお、|を利用すれば1つの処理に対して複数の値を設定することができます。

▽サンプルプログラム8-8. match文の基本構造

a=int(input())
match a:
    case 1:
        print("入力した値は1です")
    case 2:
        print("入力した値は2です")
    case 3:
        print("入力した値は3です")
    case _:
        print("1~3を入力してください。")
a=int(input())
match a:
    case 1 | 2:
        print("入力した値は1か2です")
    case 3:
        print("入力した値は3です")
    case _:
        print("1~3を入力してください。")
▼プログラミングセル8-8.

8-9. タプルを指定したmatch文
 match文では、タプルを指定することもできます。このとき、値を指定せずに変数を設定することもできます。指定した変数にはアンパック代入(複数の値の代入)の形で値が代入される点に注意してください。

▽サンプルプログラム8-9. タプルを指定したmatch文

a, b=map(int, input().split())
c=(a, b)
match c:
    case (0, 0):
        print("処理1:入力した値は(0, 0)です")
    case (0, b):
        print(f"処理2:入力した値は(0, {b})です") #第1の値を未指定
    case (a, 0):
        print(f"処理3:入力した値は({a}, 0)です") #第2のを未指定
    case (a, b):
        print(f"処理4:入力した値は({a}, {b})です") #両方を未指定
    case _:
        print("処理5:入力した値にエラーがあります")
▼プログラミングセル8-9.

問題
 以下の問題に解答しましょう。

  1. 以下の条件について比較演算子を使って条件式を記述しましょう。
    1. aはb以下である
    2. aはbより大きい
    3. aはbに含まれていない
  2. 以下の条件について比較演算子と論理演算子を使って条件式を記述しましょう。
    1. aはbまたはcに等しい
    2. aは0以上10未満である
    3. aは30より小さいまたは70以上である。ただし0ではない。
  3. 整数を標準入力し、3の倍数かどうかを判定するプログラムを作りましょう。なお、if文とmatch文で2種類作成してください。
  4. ▼プログラミングセル
  5. 4択の選択問題のプログラムを作りましょう。なお、if文とmatch文で2種類作成してください。
  6. ▼プログラミングセル
  7. 100点満点の点数を標準入力し、以下の評価表に従って評価付けの結果を表示するプログラムを作りましょう。
  8. 得点評価
    90点以上AA
    80点以上90点未満A
    70点以上80点未満B
    60点以上70点未満C
    0点以上60点未満D
    その他X
    ▼プログラミングセル