1. 食費はそのまま返る
  2. 娯楽はそのまま返る
  3. 空文字はその他になる
  4. None はその他になる
  5. もともとその他ならその他のまま
  6. 一覧にないカテゴリでも書き換えずそのまま返る
コース一覧
Python入門:基礎文法編
デフォルト値とor

Python入門:基礎文法編

変数、条件分岐、ループ、関数、リスト・辞書、ファイル操作など Python の基礎文法を、ブラウザ上で毎レッスン実際にコードを書き、自分だけの「おこづかい帳アプリ」を育てながら学べる無料コースです。プログラミング完全未経験から始められ、環境構築や事前知識は一切不要です。約 18 時間 (1 日 30 分 × 37 日) で 74 レッスンを修了でき、修了後は入力・集計・ファイル保存まで備えたスクリプトを1から書けるようになります。

1
はじめての Python
01. printで表示15分
02. 文字列の連結15分
03. 四則演算15分
04. 実行順序15分
05. コメント15分
06. エラーを読んでみる15分
07. つくる:レシート表示15分
08. 第1章クイズ10分
2
変数とデータ型
01. 変数15分
02. typeで型を調べる15分
03. 数値への変換15分
04. 文字列への変換15分
05. boolとNone15分
06. f-string15分
07. 入力を受け取る15分
08. つくる:入力できるおこづかい帳15分
09. 第2章クイズ10分
3
演算子と式
01. 比較演算子15分
02. 論理演算子15分
03. in演算子15分
04. 剰余と切り捨て除算15分
05. 連鎖比較と優先順位15分
06. 三項演算子15分
07. つくる:予算チェック15分
08. 第3章クイズ10分
4
条件分岐
01. if文の基本15分
02. if / elif / else15分
03. 条件の組み合わせ15分
04. match文15分
05. 定番:FizzBuzz判定15分
06. デフォルト値とor15分
07. つくる:カテゴリ自動判定15分
08. 第4章クイズ10分
5
ループ
01. forで合計15分
02. whileで繰り返す15分
03. rangeとstep15分
04. breakとcontinue15分
05. enumerateで番号付け15分
06. zipで組み合わせ15分
07. 入れ子ループ15分
08. つくる:何件でも記録15分
09. 第5章クイズ10分
6
関数
01. 関数を定義する15分
02. 引数と戻り値15分
03. デフォルト引数15分
04. キーワード引数15分
05. 複数の戻り値15分
06. divmod15分
07. 変数のスコープ15分
08. lambda関数15分
09. つくる:関数に分割15分
10. 第6章クイズ10分
7
リストと辞書
01. リストの追加と削除15分
02. スライス15分
03. 辞書の基本15分
04. 辞書を走査15分
05. keyでソート15分
06. setで重複除去15分
07. リスト内包表記15分
08. タプルアンパック15分
09. つくる:カテゴリ別集計15分
10. 第7章クイズ10分
8
ファイルとエラー処理
01. ファイルを読み込む15分
02. ファイルに書き込む15分
03. withで安全に扱う15分
04. CSV形式で保存15分
05. try-exceptで備える15分
06. 例外の種類15分
07. つくる:保存機能15分
08. 第8章クイズ10分
9
総合制作
01. 全機能を統合しよう15分
02. 月間レポート機能15分
03. 自由拡張15分
04. 完成と次のステップ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 する

入出力例

fill_category("食費") → "食費" fill_category("娯楽") → "娯楽" fill_category("") → "その他" fill_category(null) → "その他" fill_category("その他") → "その他" fill_category("医療費") → "医療費"

ヒント

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問で確認する

  • forで合計

    for で金額リストを1件ずつ取り出し、合計を返す total_price を作る

  • 関数を定義する

    def で処理に名前を付け、呼び出して使う。定義と呼び出しの違いを理解する

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

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

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

メモ

デフォルト値とor

⌘S で保存