完成第一题

master
anyin233 5 years ago
commit 73b7e5b9d7

@ -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
1 name sex age
2 0 Alice 1 20
3 1 Bob 1 20
4 2 Chunk 1 20
5 3 David 0 20
6 4 Eva 0 19
7 5 Frank 0 18

@ -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()))

@ -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
1 name course score
2 0 Alice A 15
3 1 Alice B 63
4 2 Alice C 70
5 3 Bob A 75
6 4 Bob B 22
7 5 Bob C 46
8 6 Chunk A 75
9 7 Chunk B 21
10 8 Chunk C 21
11 9 David A 78
12 10 David B 24
13 11 David C 10
14 12 Eva A 61
15 13 Eva B 8
16 14 Eva C 44
17 15 Frank A 76
18 16 Frank B 41
19 17 Frank C 57
Loading…
Cancel
Save