コース一覧
    Python演算子・制御フロー
    match文

    Python演算子・制御フロー

    演算子と条件分岐の使い方を学び、値の比較と分岐を組み合わせた処理を実装できるようにします。

    1
    演算子と式
    01. 比較演算子15分
    02. 論理演算子15分
    03. in演算子15分
    04. 剰余と切り捨て除算15分
    05. 連鎖比較と優先順位15分
    06. 三項演算子15分
    07. つくる:予算チェック15分
    08. 第3章クイズ10分
    2
    条件分岐
    01. if文の基本15分
    02. if / elif / else15分
    03. 条件の組み合わせ15分
    04. match文15分
    05. 定番:FizzBuzz判定15分
    06. デフォルト値とor15分
    07. つくる:カテゴリ自動判定15分
    08. 第4章クイズ10分

    match文

    match は上から順に当てはめる

    同じ変数名を 4 回書くことになる

    おこづかい帳の一覧に、カテゴリごとの短い記号を頭へ付けたいとします。elif で書くと category == という同じ形が候補の数だけ並びます。候補が 5 つあれば 5 回です。

    同じ 1 つの値を、複数の候補と突き合わせるだけ の分岐なら、match 文のほうが短く書けます。

    Python

    def unit_label(kind):
        match kind:
            case "円":
                return "金額"
            case "個":
                return "数量"
            case _:
                return "不明"

    match のうしろに調べたい値を書き、case のうしろに候補を並べます。行末はどちらもコロンです。比べる相手を 1 回書けば済むので、変数名を打ち間違える場所がそれだけ減ります。

    上から順に照合し、最初に当たった case だけが動く点は elif と同じです。match は Python 3.10 から入った文法なので、古い環境では動かないことがあります。

    受け皿の case _ を最後に置く

    最後の case _ のアンダースコアは ワイルドカード と呼ばれ、上のどれにも当てはまらなかったもの全部を受け止めます。elif の連なりにおける else と同じ役割です。

    case _ を書き忘れると、一致しなかったときに match 全体が素通りされます。関数なら return に届かないまま終わるので、戻り値は None になります。エラーは出ないのに答えだけが合わない、という形で表に出るので、書いたら必ず「どれにも当てはまらない値」を 1 つ渡して試します。

    解説

    match は値そのものを見る分岐に向いています。price >= 1000 のような大小比較には使えないので、そこは素直に if を使います。

    クオートを外すと変数として読まれる

    case "円": を case 円: と書くと、Python は 円 を これから値を入れる変数名 として扱い、どんな値でも一致してしまいます。文字列と比べたいときは、必ずクオートで囲みます。

    インデントも 1 段深くなります。match の中の case で 1 段、case の中身でさらに 1 段です。関数の中で書くと、case の中身は半角スペース 12 個分になります。

    やってみよう

    関数 category_mark(category) を実装してください。カテゴリ文字列を受け取り、下記の記号を返します。

    食費 なら "[食]"、日用品 なら "[日]"、娯楽 なら "[娯]"、交通費 なら "[交]"、それ以外のどんな文字列でも "[他]" です。かっこは半角の [ と ] です。

    match で書いてみてください。書き終わったら elif 版に直してみると、どちらが読みやすいか自分の感覚で比べられます。

    要件

    1. 関数名は category_mark で、引数は category の 1 つ
    2. 食費 / 日用品 / 娯楽 / 交通費 にそれぞれ [食] / [日] / [娯] / [交] を return する
    3. 上のどれにも当てはまらない文字列にはすべて [他] を return する
    4. かっこは半角の [ と ] を使う

    ヒント

    match category: と書き、その下に case "食費": のように候補を並べます

    case の値は文字列なのでクオートで囲みます。囲まないと変数名として解釈されます

    最後は case _: で受けます。これがないと一致しなかったとき None が返ります

    elif で書いても正解になります。両方書いて読みやすさを比べてみてください

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

    関連レッスン

    • 定番:FizzBuzz判定

      FizzBuzz を 1 つの数について判定しながら、厳しい条件を先に書くという分岐の鉄則を学ぶ

    • デフォルト値とor

      未入力のカテゴリを既定値で埋めながら、空っぽの値が False 扱いになる性質と or の働きを学ぶ

    • つくる:カテゴリ自動判定

      第4章の総仕上げ。品名に含まれるキーワードからカテゴリを推測する guess_category を作る

    • 第4章クイズ

      if / elif / else の評価順、match、条件の組み合わせ、or による既定値を5問で確認する

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 変数データに名前をつけて参照する仕組み
    • 関数処理に名前を付けて再利用できる単位
    • 戻り値呼び出し元への返答を表す点線矢印
    • インデントPythonはインデント(通常スペース4つ)でコードブロックを定義する。
    • 引数位置引数=順番で渡す。
    main.py
    エディタを読み込んでいます

    メモ

    match文

    ⌘S で保存