部活のゲーム大会の得点表
部活で、ゲーム大会をします。部員の名前と点数が出ます。平均は何点か、一位は誰か、順位はどうか。
手で計算すると、時間がかかり、間違えます。でも、この章で学んだことを合わせれば、プログラムが数秒でやってくれます。
今日のキーワード
| ことば | いみ | れい |
|---|---|---|
| 作品 | 自分で考えて作った、小さなプログラムです。 | 得点表 |
| 分ける | 大きな問題を、小さな関数に分けて、順に作ることです。 | 平均、一位、順位 |
| テスト | 関数が、正しく動くかを、決めた入力で確かめることです。 | 「テストを実行」 |
| 組み合わせる | 作った関数を、別の関数の中で使うことです。 | report_text が ranking を使う |
| 辞書のデータ | 名前を、キーにして、点数を値にして入れたデータです。 | {"さくら": 90} |
学生が入力するセルは、このプレビューでは空白です。
やってみよう: データを見る
records = {"さくら": 90, "ゆうた": 70, "まい": 80}
total = 0
for name in records:
print(name, records[name], "点")
total = total + records[name]
print("平均は", total / len(records), "点")
# 自分の部活の人を、入れてみましょう。
小さな確認: どの章の技か
やってみよう
小さな確認: どの章の技か
4問挑戦してみましょう。回答はここで採点され、その後は保存されません。点数を残したい場合や、続きから再開したい場合はログインしてください。ログインして点数を保存
答えはここで採点され、保存されません。アカウントがあれば、結果が残ります。
作り方の順番
一度に全部を作ろうとすると、迷います。やさしい関数から、一つずつ作ります。
平均、一位、基準以上は、for と if で書けます。順位は、並べかえの考え方を使います。最後に、文章にまとめます。
やってみよう: 順位を出す
records = {"ゆうた": 70, "さくら": 90, "まい": 80}
names = []
for name in records:
names.append(name)
# 点数が高い人から、前に置きます。
for i in range(len(names)):
best = i
for j in range(i + 1, len(names)):
if records[names[j]] > records[names[best]]:
best = j
temp = names[i]
names[i] = names[best]
names[best] = temp
for i in range(len(names)):
print(i + 1, "位", names[i], records[names[i]], "点")
例: 得点表の答え
| 順位 | 名前 | 点数 | 80点以上 |
|---|---|---|---|
| 1位 | さくら | 90 | はい |
| 2位 | まい | 80 | はい |
| 3位 | ゆうた | 70 | いいえ |
学生が入力するセルは、このプレビューでは空白です。
同点のとき
ヒント
同じ点数の人が二人いるとき、どちらを先にするかは、決めていません。ただし、一位の名前は、辞書で先に出る人にします。決まりを決めておくと、テストが書けます。