全会員の合計と平均
中段 / 目安 25分
松田さんが台帳を抱えて事務局に戻ってきました。「今月の全会員のポイント、合計と平均を出してくれんかね。会長に報告があるんだ」。手元にあるのは、会員1人ぶんのポイントが順に並んだリストだけです。
合計はまだしも、平均は割り算です。会長に見せる紙に 3125.6666666666665 と並んでいたら、たぶん怒られます。小数第1位までに整えて渡してください。
完成条件
ポイントのリストを受け取り、報告用の1行を組み立てて返す関数 summarize_points(points) を作ってください。
- 返す文字列の形は
合計 4300pt / 平均 1075.0ptです - 合計は整数のまま、平均は小数第1位までにします
- 平均の丸めと小数第1位までの表示は、準備済みの書式指定に任せます
- リストが空のときは
対象者なしという文字列を返します
リストを順に読む
リストは [] で囲んだ値の並びです。len() は要素の個数を返し、len([]) は0です。別の題材として、貸し出した本の冊数を足します。
Python
books = [2, 4, 1]
count = 0
for number in books:
count += number
print(count) # 7
print(len(books)) # 3for number in books は各要素を順に number に入れます。count += number は count = count + number と同じです。繰り返しの外で count / len(books) とすれば平均になります。ただし空のリストは件数が0なので、割る前に if len(books) == 0 で別に扱います。
ひな形の average = 0 は未完成でも動くための仮の値です。自分の計算で更新してください。表示は準備済みです。f-string の {値:.1f} は小数第1位まで表示します。たとえば f"距離 {2 / 3:.1f}km" は「距離 0.7km」です。
進め方
ひな形の「ここに書く」を完成させてください。準備済みのコードはそのまま使えます。手が止まったら、①方針、②使う構文、③部分解の順にヒントを開けます。
数分考えて手が止まったら、①から確認してください。本文の別の題材の例を動かし、今回の値に置き換えて考えましょう。
今回は準備済みの total を使い、繰り返しで合計を作ります。表示の形は準備済みなので、足し上げと平均の関係に集中しましょう。
空のリストを先に片づけてから本題に入ると、割り算で慌てずに済みます。
要件
- 関数名は summarize_points、引数はポイントのリスト1つとすること
- 返す文字列の形は「合計 4300pt / 平均 1075.0pt」であること
- 平均は小数第1位まで表示すること
- リストが空のときは「対象者なし」を返すこと
- 合計は準備済みの total に for で足し上げ、平均は average に入れること。表示の return はそのまま使うこと
ヒント
前のヒントを開くと次が開きます。開かずに解けると未開封クリアです