コース一覧
    Python演算子・制御フロー
    つくる:予算チェック

    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分

    つくる:予算チェック

    1 行が長くなりすぎて、どこを直せばいいか分からない

    第 3 章の総仕上げとして、合計と予算を見比べて判定まで書き出す check_budget を作ります。返すのは 3 行です。

    Python

    合計 3200円
    予算 3000円
    200円オーバー

    予算に収まっていれば、3 行目が のこり 500円 に変わります。数字を並べるだけの出力と、「オーバー」の一言がある出力とでは、受け取る側の行動が変わります。判定を足すというのは、そういうことです。

    問題は、条件で変わる部分を組み立ての式へ直接埋め込むと、1 行が長くなりすぎて読めなくなることです。

    変わるところだけ、先に名前を付ける

    3 行のうち変わるのは 3 行目だけで、1 行目と 2 行目はいつも同じ形です。そこで、変わるところを先に作って変数に入れてから、最後に全体を組み立てます。

    Python

    stock = 2
    state = "残りわずか" if stock <= 3 else "十分あります"
    print(f"在庫 {stock}個\n{state}")

    1 行目で条件によって変わる文字列を作って state に入れ、2 行目で全体をまとめています。1 本の式に押し込むこともできますが、そうすると横に長くなって目で追えません。途中の結果に名前を付けると式が短くなり、あとで見返したときに何をしているかも分かります。変数は、値を保存するためだけの道具ではありません。

    引く向きを間違えない

    超過額とのこりでは、引き算の向きが逆になります。オーバーしているときは合計のほうが大きく、収まっているときは予算のほうが大きいからです。

    向きを取り違えると -200円オーバー のような妙な表示になります。エラーは出ません。引き算は その枝で大きいと分かっているほう から書く、と覚えると迷いません。マイナス付きの数字が出たら、自分がどちらの枝にいるかを確かめてください。

    やってみよう

    関数 check_budget を実装してください。引数は total と budget の 2 つで、下記の 3 行を \n でつないだ 1 本の文字列を返します。

    1 行目は 合計 のあとに total と 円、2 行目は 予算 のあとに budget と 円、3 行目が判定です。total が budget を超えていれば超過額に 円オーバー を付け、そうでなければ のこり のあとに残額と 円 を書きます。末尾に改行は付けません。

    check_budget(3200, 3000) なら上の 3 行、check_budget(2500, 3000) なら 3 行目が のこり 500円 です。ちょうど予算どおりの check_budget(3000, 3000) は、超えてはいないので 0円オーバー ではなく のこり 0円 になります。この境目の決め方は、第 3 章の最初から一貫させています。

    要件

    1. 関数名は check_budget で、引数は total と budget の2つ
    2. 1行目は 合計 {total}円、2行目は 予算 {budget}円 とする
    3. 3行目は total が budget を超えていれば {total - budget}円オーバー、それ以外は のこり {budget - total}円 とする
    4. 行の区切りは \n を使い、末尾には改行を付けない

    ヒント

    3行目だけを先に judge という変数に作ってから組み立てると読みやすくなります

    judge = f"{total - budget}円オーバー" if total > budget else f"のこり {budget - total}円" の形です

    引き算の向きに注意してください。オーバー側は total - budget、のこり側は budget - total です

    全体は f"合計 {total}円\n予算 {budget}円\n{judge}" で返せます

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

    関連レッスン

    • 第3章クイズ

      比較演算子、論理演算子、in、剰余、連鎖比較、三項演算子の理解を5問で確認する

    • if文の基本

      if で条件が成り立つときだけ処理を実行する書き方と、インデントの意味を学ぶ

    • 三項演算子

      A if 条件 else B で値を2択に切り替え、予算内かオーバーかのラベルを返す

    • 連鎖比較と優先順位

      0 <= price <= budget の連鎖比較と、演算子が計算される順番を整理する

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

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

    • 変数データに名前をつけて参照する仕組み
    • 関数処理に名前を付けて再利用できる単位
    • 引数位置引数=順番で渡す。
    main.py
    エディタを読み込んでいます

    メモ

    つくる:予算チェック

    ⌘S で保存