1
+ def add_student (database : dict , name : str ):
2
+ database [name ] = {}
3
+
4
+
5
+ def add_course (database : dict , name : str , course : tuple ):
6
+ # ignore courses with grade 0
7
+ if course [1 ] == 0 :
8
+ return
9
+ # check if course is repeated
10
+ elif course [0 ] in database [name ]:
11
+ if database [name ][course [0 ]] < course [1 ]:
12
+ database [name ][course [0 ]] = course [1 ]
13
+ # new course
14
+ else :
15
+ new_dict = {}
16
+ new_dict [course [0 ]] = course [1 ]
17
+ database [name ].update (new_dict )
18
+
19
+
20
+ def calc_avg_grade (grades : list ) -> float :
21
+ return sum (grades ) / len (grades )
22
+
23
+
24
+ def print_student (database : dict , name : str ):
25
+ if name in database :
26
+ print (f'{ name } :' )
27
+ if database [name ]:
28
+ grades = []
29
+ print (f' { len (database [name ])} completed courses:' )
30
+ for key , value in database [name ].items ():
31
+ print (f' { key } { value } ' )
32
+ grades .append (value )
33
+ print (f' average grade { calc_avg_grade (grades )} ' )
34
+ else :
35
+ print (f' no completed courses' )
36
+ else :
37
+ print (f'{ name } : no such person in the database' )
38
+
39
+
40
+ def summary (database : dict ):
41
+ most_courses = 0
42
+ most_courses_name = ''
43
+ best_avg = 0
44
+ best_avg_name = ''
45
+ for student , courses_data in database .items ():
46
+ if len (courses_data ) > most_courses :
47
+ most_courses = len (courses_data )
48
+ most_courses_name = student
49
+ avg_grade = calc_avg_grade (courses_data .values ())
50
+ if avg_grade > best_avg :
51
+ best_avg = avg_grade
52
+ best_avg_name = student
53
+
54
+ print (f'students { len (database )} ' )
55
+ print (f'most courses completed { most_courses } { most_courses_name } ' )
56
+ print (f'best average grade { best_avg } { best_avg_name } ' )
57
+
58
+
59
+ if __name__ == '__main__' :
60
+ students = {}
61
+ add_student (students , "Peter" )
62
+ add_student (students , "Eliza" )
63
+ add_course (students , "Peter" , ("Data Structures and Algorithms" , 1 ))
64
+ add_course (students , "Peter" , ("Introduction to Programming" , 1 ))
65
+ add_course (students , "Peter" , ("Advanced Course in Programming" , 1 ))
66
+ add_course (students , "Eliza" , ("Introduction to Programming" , 5 ))
67
+ add_course (students , "Eliza" , ("Introduction to Computer Science" , 4 ))
68
+ summary (students )
0 commit comments