練習問題A

練習問題 A

成績データをまねた dict データ構造を用いて、いろいろデータ処理してみましょう。

  • 皆さんが取り組むのは、 lang_test/dict_renshu.py。冒頭に dict1 というサンプルデータを配置していますが、個々の値が代わっても動作するように作成してください。

dict1 には、以下のような感じの情報が 10人分入っています。

{'student0_YmE': {'数学': 88, '英語': 75, '物理': 66, '化学': 85}, 
 'student1_lYF': ... }

ID (例:student0_YmE) や選択科目、スコアは、学生によって異なるが、 全員数学と英語は受講している。 理科は、物理、化学、生物の3科目から好きな数(0含む)受講している。

Lesson1

dict1 から、各学生の ID と数学の成績の組を 10 行にわたって表示しましょう。順番は問わないです。

実行例:

student0_LGl 78
student1_nFE 85
...

Lesson 2

dict1 から、各学生の ID を key として、数学の成績の値となるような dict: math_dict を作成し、print(math_dict) で表示しましょう。

実行例:

{'student0_LGl': 78, 'student1_nFE': 85, .. }

Lesson 3

dict1 から、英語の点数を集めて list にし、点数順にソートしましょう。 一般に list0 は、 要素が大小比較できるようなデータ構造なら、list0.sort() でソート可能です。余談ですが、順番を逆にしたい場合は、list0.sort(reverse=True) で OK. まあ試してみてください。

実行例:

[67, 70, 71, 73, 74, 78, 82, 84, 87, 88]

Lesson 4

各科目の受験者数を dict 形式で出力してみましょう。

実行例:

{'数学': 10, '英語': 10, '物理': 7, '化学': 7, '生物': 3}

Lesson 5

各科目の合計点と受験者数、平均点を以下のような dict にまとめてみましょう。

実行例:

{'数学': {'num': 10, 'total': 743, 'average': 74.3}, '英語: ...

解き方は様々です。

  • 各教科ごとに、人数や合計点を dict1 から探してきて、結果にためていく
  • dict1 の中身を確認しながら、各教科の合計点などを計算し、最後に結果をまとめる

Read more