1. test 1
  2. test 2
  3. test 3
  4. test 4
  5. test 5
コース一覧
Python道場 商店街ポイントカードの10問
処理を関数に分けよ

Python道場 商店街ポイントカードの10問

Python入門で身に付けた技を、商店街ポイントカード事務局の仕事で試す演習専用コースです。解説はありません。依頼と完成条件だけを読み、白紙から自分で組み立てます。手が止まったときのために、方針・使う構文・部分解の3段階のヒントを各問に用意しています。表示の整形から始まり、条件分岐、ループ、関数、辞書での集計、文字列の掃除、ファイル保存を経て、最後は全機能を束ねた台帳アプリまで、10問で Python の主要な道具を一巡します。1問15分から45分、全10問で約5時間です。Python入門を終えて「読めるけれど自分では書けない」と感じている方に向いています。

1
初段
01. 会員証を表示せよ15分
02. ポイント付与計算15分
03. 会員ランク判定20分
04. ポイントBuzz20分
2
中段
01. 全会員の合計と平均25分
02. 処理を関数に分けよ25分
03. ランク別に集計せよ30分
04. 乱れた台帳を掃除せよ30分
3
師範
01. 台帳を保存・復元せよ35分
02. 総合 ポイント管理台帳45分

処理を関数に分けよ

中段 / 目安 25分

カメ師範が事務局の隅から声をかけてきました。「松田の依頼が増えてきたな。付与計算とランク判定、道具にしておけ」。同じ計算を毎回書き下していては、直すときに全部を直すことになります。

道具とは関数のことです。ここで作った2つは、問7でもそのまま持ち出します。

完成条件

新規入会の窓口で使う処理を作ります。入会時の会計金額から付与ポイントを出し、そのポイントで初期ランクを決める、という流れです。

次の3つを定義してください。

  • calc_points(amount) は会計金額を受け取り、100円につき1ポイントを切り捨てで返します
  • get_rank(points) はポイントを受け取り、1000以上なら ゴールド、500以上なら シルバー、それ未満なら ブロンズ を返します
  • describe_member(amount) は上の2つを両方呼び出して、付与 1200pt / ゴールド の形の文字列を返します

採点は describe_member を通して行います。中で calc_points と get_rank を呼ばずに、1つの関数へ計算を書き込んでも数字は合ってしまいますが、それでは道具を作ったことになりません。師範に見られていると思って分けてください。

進め方

白紙から書いてください。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使う構文、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。

開かずに10分粘って進まないなら、①だけ開けてください。粘る時間そのものには価値がありません。価値があるのは、自分で書いた行が動いた瞬間です。

表示の文言を関数の中で print してはいけません。関数は値を返すだけにして、見せ方は呼んだ側が決めます。この分け方が、あとで台帳アプリを組むときに効いてきます。

要件

  1. calc_points(amount) は 100円につき1ポイントを切り捨てで返すこと
  2. get_rank(points) は 1000以上でゴールド、500以上でシルバー、それ未満でブロンズを返すこと
  3. describe_member(amount) は calc_points と get_rank を両方呼び出すこと
  4. describe_member が返す文字列の形は「付与 1200pt / ゴールド」であること
  5. 関数の中で print せず、値を return で返すこと

入出力例

describe_member(120000) → "付与 1200pt / ゴールド" describe_member(100000) → "付与 1000pt / ゴールド" describe_member(50000) → "付与 500pt / シルバー" describe_member(49999) → "付与 499pt / ブロンズ" describe_member(980) → "付与 9pt / ブロンズ"

ヒント

前のヒントを開くと次が開きます。開かずに解けると未開封クリアです

①方針 小さい道具を2つ先に作り、describe_member はその2つをつなぐだけの短い関数にします

ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/09

関連レッスン

  • ランク別に集計せよ

    会員のリストをランクごとに数え、辞書にまとめます。前の問題で作った関数を再利用します。

  • 乱れた台帳を掃除せよ

    空白や単位が混ざった文字列を数値に直します。直せないものは数えて報告します。

  • 台帳を保存・復元せよ

    会員データをファイルに書き出し、読み直して元の形に戻します。往復して初めて正解です。

main.py
学習モード
エディタを読み込んでいます

メモ

処理を関数に分けよ

⌘S で保存