1. test 1
  2. test 2
  3. test 3
コース一覧
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分

ランク別に集計せよ

中段 / 目安 30分

松田さんが景品カタログを広げています。「ランクごとに何人いるか知りたい。ゴールドが増えたら景品を仕入れんと」。人数が分からないまま仕入れると、余るか足りないかのどちらかです。

渡されるのは会員の保有ポイントが並んだリストです。1人ずつランクに直して、ランクごとに数え上げます。

完成条件

保有ポイントのリストを受け取り、ランクごとの人数を辞書で返す関数 count_by_rank(members) を作ってください。

  • 返す辞書のキーは ゴールド、シルバー、ブロンズ の3つです
  • 0人のランクもキーを残し、値を 0 にします。景品の発注書は空欄より0のほうが読み違えません
  • ランクの判定は問6の get_rank(points) をそのまま持ってきて再利用します
  • 判定の基準は問6と同じで、1000以上がゴールド、500以上がシルバー、それ未満がブロンズです

進め方

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

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

数え方は2通りあります。3つのキーを最初から0で用意しておく道と、出てきたキーをその都度足す道です。今回は0人のランクも残す約束なので、前者のほうが素直に収まります。

後者で書いてみたい場合は、キーが無いときにどうなるかを確かめてから進めてください。get の第2引数が効いてきます。

要件

  1. get_rank(points) を定義し、count_by_rank の中から呼び出すこと
  2. count_by_rank(members) は members に並んだポイントを1件ずつランクへ直して数えること
  3. 返す辞書はゴールド・シルバー・ブロンズの3つのキーを必ず持つこと
  4. 該当者がいないランクは値を 0 にすること

入出力例

count_by_rank([1200,300,800,1000,499,500,2400]) → {"ゴールド":3,"シルバー":2,"ブロンズ":2} count_by_rank([100,200,0]) → {"ゴールド":0,"シルバー":0,"ブロンズ":3} count_by_rank([]) → {"ゴールド":0,"シルバー":0,"ブロンズ":0}

ヒント

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

①方針 3つのキーを 0 で用意した辞書を先に作り、リストを1周しながら該当するキーに1ずつ足していきます

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

関連レッスン

  • 乱れた台帳を掃除せよ

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

  • 台帳を保存・復元せよ

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

  • 処理を関数に分けよ

    付与計算とランク判定を、2つの関数という道具にまとめます。

  • 全会員の合計と平均

    ポイントのリストを走査して合計と平均を出します。平均は小数1桁に整えます。

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

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

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

メモ

ランク別に集計せよ

⌘S で保存