微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我尝试过一种方法,可以显示所有学生的整体平均水平。如您在代码中所见,我尝试创建一个空列表(类变量)来存储每个学生的平均成绩。在我的 init 方法中,我描述了每个加入他们的新学生都将其平均成绩保存在“成绩单”列表中,以便以后可以定义一种方法,该方法可以为我提供所有学生的总体平均成绩。为了能够做到这一点,我必须将所有年级分数的总和除以学生人数。但是,它在我的程序中不起作用。我不确定要使用哪种方法,是否可以使用staticmethod来做到这一点,或者它是否可以与常规方法一起工作。我已经定义了一种方法“ mark_avarage_students_all”来执行上述划分。但是,由于缺少自变量,执行此方法给我一个错误。有人知道我最终将如何为所有学生输出平均学分?预先感谢

这是我的代码

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,markaverage = str_std.split('-') 
        return cls(first,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()

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。