In [48]:
class Student:
def __init__(self,n,m):
self.name = n
self.major = m
self.courses = []
def add_course(self,co,g):
self.courses.append((co,g))
def gpa(self):
gc = {'A': 4, 'B': 3, 'C': 2, 'D': 1, 'F': 0}
points = 0
credits = 0
for c in self.courses:
#credits += c.credits
cr = c[0].get_credits()
credits += cr
points += gc[c[1]] * cr
if credits > 0:
return points/credits
else:
return None
def __str__(self):
return self.name
In [49]:
class Course:
def __init__(self,co,cr,t):
self.cno = co
self.credits = cr
self.title = t
self.students = []
def get_credits(self):
return self.credits
def add_student(self,s):
self.students.append(s)
def __str__(self):
return self.cno
In [50]:
s1 = Student("Alice","CSC")
s2 = Student("Bob","MATH")
s3 = Student("Charlie","CSC")
c1 = Course("CSC1301",4,"Intro to CS I",)
c2 = Course("CSC1302",4,"Intro to CS II")
In [51]:
s1.add_course(c1,"A")
c1.add_student(s1)
s3.add_course(c1,"B")
c1.add_student(s3)
s1.add_course(c2,"A")
c2.add_student(s1)
In [52]:
print(s1.gpa())
4.0
In [53]:
print(s3.gpa())
3.0
In [54]:
print(s2.gpa())
None