commit
73b7e5b9d7
|
@ -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')
|
@ -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()))
|
||||
|
|
Loading…
Reference in new issue