学生信息程序(添加到)如何添加两种方法

2024-04-19 00:25:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在添加上周完成的代码。我们的指导老师给了我们方向(贴在下面),对我和我的搭档来说,他们不是很有描述性。我并不是在问代码的答案,只是一个不同的,更丰富的描述或提示如何开始这些补充。你知道吗

import math

class Student:

    def __init__(self, name, student_id, intended_major, grade):
        self.name = name
        self.student_id = student_id
        self.intended_major = intended_major
        self.grade = grade
        self._exams = []
        self._quizzes = []
        self._projects = []

    def get_name(self):
        return self.name

    def get_student_id(self):
        return self.student_id

    def get_major(self):
        return self.intended_major

    def set_quizzes(self, _quizzes):
        self._quizzes = _quizzes[:]

    def set_exams(self, _exams):
        self._exams = _exams[:]

    def set_projects(self, _projects):
        self._projects = _projects[:]

    def get_exams_mean(self):
        return float((sum(self._exams)) / max(len(self._exams), 1))

    def get_exams_median(self):
        if len(self._exams) == 0:
            return 0

        lst = sorted(self._exams)

        if len(lst) % 2 == 0:
            n1 = lst[int(len(lst)/2)]
            n2 = lst[int(len(lst)/2)-1]
            return ( n1 + n2 ) / 2
        else:
            return lst[int(len(lst) / 2)]

    def get_exams_std_dev(self):
        if len(self._exams) == 0:
            return 0

        mean = sum(self._exams) / len(self._exams)
        total = 0
        for i in self._exams:
            total += (i - mean)**2
        return math.sqrt(total/len(self._exams))

    def get_quizzes_mean(self):
        return float((sum(self._quizzes)) / max(len(self._quizzes), 1))

    def get_quizzes_median(self):
        if len(self._quizzes) == 0:
            return 0

        lst = sorted(self._quizzes)

        if len(lst) % 2 == 0:
            n1 = lst[int(len(lst) / 2)]
            n2 = lst[int(len(lst) / 2) -1]
            return ( n1 + n2 ) / 2
        else:
            return lst[int(len(lst) / 2)]

    def get_quizzes_std_dev(self):
        if len(self._quizzes) == 0:
            return 0

        mean = sum(self._quizzes) / len(self._quizzes)
        total = 0
        for i in self._quizzes:
            total += (i - mean) ** 2
        return math.sqrt(total / len(self._quizzes))

    def get_projects_mean(self):
        return float((sum(self._projects)) / max(len(self._projects), 1))

    def get_projects_median(self):
        if len(self._projects) == 0:
            return 0

        lst = sorted(self._projects)

        if len(lst) % 2 == 0:
            n1 = lst[int(len(lst)/2)]
            n2 = lst[int(len(lst)/2)-1]
            return ( n1 + n2 ) / 2
        else:
            return lst[int(len(lst) / 2)]

    def get_projects_std_dev(self):
        if len(self._projects) == 0:
            return 0

        mean = sum(self._projects)/len(self._projects)
        total = 0
        for i in self._projects:
            total += (i - mean)**2
        return math.sqrt(total/len(self._projects))

    def set_grade_calculation_type(self):
        if True:
            return 0
        else:
            pass

    def set_quiz(self, grade, number):
        pass

向学生类中添加以下实例方法的存根:

  • 设置等级计算类型:
    该方法采用布尔参数:True将缺少的分数计算为零; False跳过计算中缺失的分数
    您需要在类中存储此值
    如果未调用此方法,则默认为True

  • 设置测验:
    接受两个参数:grade和number,用于标识测验
    如果测验列表中的元素少于number,则将缺少的测验添加为 无
    由于这是计算机科学,我们将从测验0开始。
    例如,假设学生在测验0的列表中有两个测验分数 1=[90,78],我们叫student.set\测验(89,4). 我们错过了测验2 所以我们的更新列表是[90,78,None,None,89]。将来如果 我们打电话student.set\测验(93,2)我们会有[90,78,93,无,89]。

  • 集合考试:类似于集合测验
  • set\项目:类似于set\测验

Tags: selfgetlenreturnifdefmeanstudent