# Sum of all the elements in a list within a class

## Question:

I’ve created a class named `StudentInfo`

which will get the name of the student, grade, and the age.

For adding those info in a list I’ve created a list named `student`

and then append those info in that list.

Now I want to find the average of those students’ grades, so I’ve created a function `get_average`

.

How do I total the sum of the grade of *n* number of students and print it?

For adding the marks alone I’ve called the index of particular and then the student’s grade.

Instead of this how can I add all the students grade and find the average?

Here’s the code:

```
class StudentInfo:
def __init__(self,name,age,grade):
self.studentname = name
self.studentage = age
self.studentgrade = grade
def name(self):
return self.studentname
def age(self):
return self.studentage
def grade_1(self):
return self.studentgrade
class Course:
def __init__(self,name,maxstudents):
self.nameofcourse = name
self.maxstudents = maxstudents
self.student = []
def add_student(self,studentinfo):
return self.student.append(studentinfo)
def get_average(self):
avg = (self.student[0].studentgrade + self.student[1].studentgrade +
self.student[2].studentgrade)/len(self.student)
return avg
a = StudentInfo('karthi',16,100)
a2 = StudentInfo('lol',16,99)
a3 = StudentInfo('oo',16,90)
b = Course('cs',3)
b.add_student(a)
b.add_student(a2)
b.add_student(a3)
print(b.get_average())
print(b.student[1].studentname)
```

## Answers:

You could use for loops for that.

```
def get_sum(self):
self.sum = 0
for student in self.student:
self.sum += student.studentgrade
print(self.sum)
```

Also If you want to get the average of N Number of students you can later just devide the sum throught the amount of students

```
self.avg = self.sum/len(self.student)
```

Rewrite *get_average()* as:

```
def get_average(self):
if self.student:
return sum(s.studentgrade for s in self.student) / len(self.student)
```

**Note:**

The function will implicitly return None if the *student* list is empty