練習問題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の中身を確認しながら、各教科の合計点などを計算し、最後に結果をまとめる