python-3.x 类中列表中所有元素的总和

5lhxktic  于 2023-01-27  发布在  Python
关注(0)|答案(2)|浏览(152)

我创建了一个名为StudentInfo的类,它将得到学生的名字,年级和年龄,为了把这些信息添加到列表中,我创建了一个名为student的列表,然后把这些信息附加到列表中,现在我想得到这些学生的平均成绩,所以我创建了一个函数get_average
我如何计算 n 个学生的成绩之和并打印出来?
如果只把分数相加,我就称之为特殊指数,然后是学生的分数,那么我怎么才能把所有学生的分数相加,得出平均值呢?
下面是代码:

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)
w8f9ii69

w8f9ii691#

将 * get_average()* 重写为:

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

如果 * student * 列表为空,则函数将隐式返回None

baubqpgj

baubqpgj2#

你可以用for循环来实现。

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

    print(self.sum)

同样,如果你想得到N个学生的平均值,你可以稍后用学生的数量除以总和

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

相关问题