我如何确定所有学生的平均成绩?

How do I establish the average grade for all students?

我尝试了一种方法,可以显示所有学生的平均水平。正如您在我的代码中所见,我尝试创建一个空列表(class-变量)来存储每个学生的平均成绩。在我的 init 方法中,我描述了每个加入他们的新学生都会将他们的平均成绩保存在“marklist”列表中,这样我以后就可以定义一个方法来给出我的总体平均成绩全体学生。然而,为了能够做到这一点,我必须将所有成绩点的总和除以学生人数。但是,它在我的程序中不起作用。我不太确定要使用哪种方法,我是否可以使用静态方法执行此操作,或者它是否适用于普通方法。我定义了一个执行上述除法的方法“mark_avarage_students_all”。但是,由于缺少 self 参数,执行此方法会给我一个错误。任何人都知道我如何最终为所有学生输出这个平均成绩?提前致谢

这是我的代码:

class Students:

    #class variables
    num_of_students = 0
    #use later to add up all marks from all student
    marklist = []

    def __init__(self, first, last, age, catalognumber, markaverage):
        self.first = first
        self.last = last
        self.age = age
        self.catalognumber = catalognumber
        self.markaverage = markaverage
        self.averageall = Students.marklist.append(self.markaverage)

        Students.num_of_students += 1

    def std_description(self):
        print('My Name is {} {}, I am {} years old.'.format(self.first, self.last, self.age))
        print('My Catalog Number is {} and I have a Mark-average of {}'.format(self.catalognumber, self.markaverage))
        print("")

    @classmethod
    def convert_str(cls, str_std):
        first, last, age, catalognumber, markaverage = str_std.split('-') 
        return cls(first, last, age, catalognumber, markaverage)   

    #calculate the mark average of all students --> sum(marklist) / sum(num_of_students)
    def mark_average_students_all(self):
        return sum(Students.marklist) / Students.num_of_students

if __name__ == '__main__':
    std_1 = 'Jill-Janson-18-20-1.6'
    convert_std_1 = Students.convert_str(std_1)
    convert_std_1.std_description()

    Students.mark_average_students_all()

您将其定义为实例方法,但从 class 中调用了它。因此,调用没有隐式 self 参数。从实例中调用它,或更改定义以匹配您的用法。更好的选择是匹配用法:只需将其声明为 @classmethod 并转储 self 参数(您不使用)。