コース一覧
    Python演算子・制御フロー
    デフォルト値とor

    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分

    デフォルト値とor

    or で既定値、is None との違い

    未入力のまま保存されると、あとの集計が狂う

    おこづかい帳に記録を足すとき、カテゴリの入力を面倒がって空のまま進めてしまうことがあります。空のまま保存すると、集計するときに行き場のない記録が残ります。

    そこで「入力されていなければ既定値で埋める」という穴埋めをします。未入力を表す値は 2 通りあり、どちらも受け止められるようにします。空文字 "" は何も打たずに確定したとき、None はそもそも値が渡されなかったときです。

    Python

    memo = None
    if memo is None:
        print("メモなし")

    None かどうかの判定に == ではなく is を使っている点に注目してください。None は世界に 1 つしかない特別な値なので、「同じ値か」ではなく「そのものか」を見る is で比べるのが Python の作法です。memo == None でも動きますが、エディタは is None を勧めてきます。

    空っぽの値は False として扱われる

    Python では、if の条件に True や False 以外の値をそのまま書けます。そのとき 空っぽのもの は False として扱われます。偽になるのは False と None と 0、空文字 ""、それに空のリストや辞書です。残りはすべて真です。

    つまり if memo: と書けば「memo に中身があるなら」という意味になります。None も "" も 1 つの条件でまとめて捕まえられるので、判定を 2 本並べる必要がありません。

    or を使うと、判定と値の選択を 1 つの式にできます。

    Python

    name = ""
    label = name or "名無し"
    print(label)

    名無し が出ます。or は「左が真ならその左の値を、そうでなければ右の値を返す」働きをします。True や False そのものではなく、元の値のほう が返るのがポイントです。"たろう" or "名無し" は "たろう" になります。既定値の指定として実務でもよく見かける書き方です。

    0 円が既定値に化ける

    この穴埋めは短くて強力ですが、0 も偽として扱われる点だけ注意します。

    Python

    price = 0
    print(price or 100)

    100 が出ます。0 円という正しい入力が、勝手に 100 に置き換わってしまいました。金額のように 0 が意味を持つ値では or を使わず、if price is None: と明示的に書きます。

    文字列でも同じで、"" を「意味のある空」として扱いたい場面では使えません。何を未入力と見なすかを先に決めてから、道具を選びます。

    やってみよう

    関数 fill_category(category) を実装してください。category が空文字 "" か None のときは "その他" を返し、それ以外はそのまま category を返します。

    if でも or でもどちらでも構いませんが、まず if で書いてから短く縮めてみると、or の働きが体で分かります。

    要件

    1. 関数名は fill_category で、引数は category の 1 つ
    2. category が空文字 "" のときは "その他" を return する
    3. category が None のときも "その他" を return する
    4. それ以外のときは category をそのまま return する

    ヒント

    return category or "その他" の 1 行で書けます

    or は True ではなく元の値のほうを返します

    空文字と None はどちらも False 扱いになるので、1 つの条件でまとめて捕まえられます

    if で書くなら if category: が真のときに category を返し、そうでなければ "その他" を返します

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

    関連レッスン

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

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

    • 第4章クイズ

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

    • 定番:FizzBuzz判定

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

    • match文

      1 つの値を複数の候補と突き合わせる match 文の書き方と、elif との使い分けを学ぶ

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

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

    • リスト順序付きで複数の値を扱うデータ構造
    • 関数処理に名前を付けて再利用できる単位
    • 引数位置引数=順番で渡す。
    • None「値がない」ことを表す特別な値。
    main.py
    エディタを読み込んでいます

    メモ

    デフォルト値とor

    ⌘S で保存