From 73b7e5b9d73eab802a2c146aded49ccc771d175e Mon Sep 17 00:00:00 2001 From: anyin233 Date: Tue, 16 Jun 2020 14:24:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=AC=AC=E4=B8=80=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data.csv | 7 +++++++ gen_data.py | 31 +++++++++++++++++++++++++++++++ question1.py | 42 ++++++++++++++++++++++++++++++++++++++++++ score.csv | 19 +++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 data.csv create mode 100644 gen_data.py create mode 100644 question1.py create mode 100644 score.csv diff --git a/data.csv b/data.csv new file mode 100644 index 0000000..f632a7d --- /dev/null +++ b/data.csv @@ -0,0 +1,7 @@ +,name,sex,age +0,Alice,1,20 +1,Bob,1,20 +2,Chunk,1,20 +3,David,0,20 +4,Eva,0,19 +5,Frank,0,18 diff --git a/gen_data.py b/gen_data.py new file mode 100644 index 0000000..9b6782a --- /dev/null +++ b/gen_data.py @@ -0,0 +1,31 @@ +import pandas as pd +import random +from itertools import product + +names = ['Alice', 'Bob', 'Chunk', 'David', 'Eva', 'Frank'] +course = ['A', 'B', 'C'] +age = [random.randint(18, 20) for _ in range(len(names))] + + +stu = pd.DataFrame({ + 'name':names, + 'sex':[random.randint(0, 1) for _ in range(len(names))], + 'age':age, +}) + +stu.to_csv('data.csv') + +p = product(names, course) +names.clear() +course.clear() +for x, y in p: + names.append(x) + course.append(y) + +score = pd.DataFrame({ + 'name':names, + 'course':course, + 'score':[random.randint(0, 100) for _ in range(len(names))] +}) + +score.to_csv('score.csv') \ No newline at end of file diff --git a/question1.py b/question1.py new file mode 100644 index 0000000..185764d --- /dev/null +++ b/question1.py @@ -0,0 +1,42 @@ +import random + +class Student: + def __init__(self, name, sno, sex, age): + self.name = name + self.sno = sno + self.sex = sex + self.age = age + self.score = dict() + self.total_score = 0 + + def update_score(self, course, score): + self.score[course] = score + self.total_score += score + + def get_avg(self): + return self.total_score / len(self.score) + +if __name__ == "__main__": + stu = dict() + with open('data.csv', 'r') as f: + lines = f.readlines() + for index, l in enumerate(lines): + if index == 0: + continue + w = l.split(',') + if len(w) > 1: + s = Student(w[1], w[0], w[2], w[3]) + stu[w[1]] = s + with open('score.csv', 'r') as f: + lines = f.readlines() + for index, l in enumerate(lines): + if index == 0: + continue + w = l.split(',') + if len(w) > 1: + stu[w[1]].update_score(w[2], eval(w[3])) + stu = list(stu.values()) + stu.sort(key=lambda x : x.get_avg()) + for s in stu: + print("name:{}, avg:{}".format(s.name, s.get_avg())) + diff --git a/score.csv b/score.csv new file mode 100644 index 0000000..5b42631 --- /dev/null +++ b/score.csv @@ -0,0 +1,19 @@ +,name,course,score +0,Alice,A,15 +1,Alice,B,63 +2,Alice,C,70 +3,Bob,A,75 +4,Bob,B,22 +5,Bob,C,46 +6,Chunk,A,75 +7,Chunk,B,21 +8,Chunk,C,21 +9,David,A,78 +10,David,B,24 +11,David,C,10 +12,Eva,A,61 +13,Eva,B,8 +14,Eva,C,44 +15,Frank,A,76 +16,Frank,B,41 +17,Frank,C,57