我如何确定所有学生的平均成绩?
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
参数(您不使用)。
我尝试了一种方法,可以显示所有学生的平均水平。正如您在我的代码中所见,我尝试创建一个空列表(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
参数(您不使用)。