-1

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)
Mark Tolonen
  • 166,664
  • 26
  • 169
  • 251

2 Answers2

1

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

DarkKnight
  • 19,739
  • 3
  • 6
  • 22
-2

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)
    
Nico Waser
  • 30
  • 1
  • 1
    You don't need to make `sum` an instance variable -- you can just make a local variable `s` and `return s` at the end of the function. See https://stackoverflow.com/q/7129285/843953 – Pranav Hosangadi Jan 22 '23 at 06:28
  • @Nico Are you familiar with the built-in *sum()* function? You'll find it very useful for this functionality – DarkKnight Jan 22 '23 at 07:23