Python hw,类和方法的麻烦

时间:2012-12-11 21:18:35

标签: python

我在CS课程中遇到麻烦问题。问题与在python中创建类有关。继承人提示

您的班级应该命名为Student,您应该定义以下方法:

__init__:此方法初始化Student对象。

参数:名称,GPA和许多单位

•应该根据名称,GPA和单位初始化实例变量 传入的信息。如果GPA或单位数为负数,则将其设置为0.(不要担心此方法中的非数字值。)

update:如果Student接受新类,则此方法更新Student对象的实例变量。

•参数:新班级的单位,新班级的成绩(作为数字)。

•应修改单位的实例变量以添加新类的单位

•应修改GPA以包含新课程中获得的成绩。 (请注意,这将是使用单位计数和两组GPA的加权平均值。)

get_gpa:此方法应返回学生的GPA。

get_name:此方法应返回学生的姓名。

继承人我拥有的

class Student:
  def__init__(self,name,GPA,units):
    if units <0:
      units=0
    if GPA<0:
      GPA=0
    self.name=name
    self.GPA=GPA
    self.units=units

  def update(newunits,GPE):

这就是我能提出的所有内容

2 个答案:

答案 0 :(得分:3)

让我们通过一些有希望帮助你的观点:

构造函数(__init__

  

如果GPA或单位数为负数,则将其设置为0.

所以你可能想分别检查每个:

if units < 0:
    units = 0
if GPA < 0:
    GPA = 0

更新方法

方法通常将当前对象的引用作为第一个参数,按照约定命名为self(就像在__init__中一样)。因此,您的更新方法声明应如下所示:

def update(self, newunits, GPE):
    ...
  

应修改单位的实例变量以添加新类的单位

正如您在构造函数中所做的那样,您可以使用self.varname访问实例变量。所以你可能想做这样的事情:

self.units += newunits
  

应修改GPA以包含新课程中获得的成绩。 (请注意,这将是使用单位计数和两组GPA的加权平均值。)

在您更新self.units时,您必须在此处更新self.GPA。不幸的是,我不知道GPA是什么以及如何计算,所以我只能猜测:

self.GPA = ((self.GPA * oldunits) + (GPE * newunits)) / self.units

请注意,我在这里引入了一个新的局部变量oldunits,它只是在更新之前暂时存储单位(更新后oldunits = self.units - newunits)。

get_gpa和get_name

这些是简单的getter,只返回对象的值。这里有单位的示例,即您应该自己弄清楚实际的需求值:

def get_units (self):
    return self.units

请注意,使用getter(get_x方法)是非常简单的,因为您只希望人们直接访问属性(同时小心处理它们)。

答案 1 :(得分:0)

我会帮助你完成这个问题,但首先让我指出一个小错误:

if units <0 and GPA <0:
  units=0
  GPA=0

只有当它们都是负数时,才会将单位和GPA设置为零。如果它是负数,你将要将每个设置为零,即使另一个不是。将其更改为:

if units < 0: units = 0
if GPA < 0: GPA = 0

关于您的更新方法,正确的签名将是:

def update(self, newunits, GPE):

Python对象方法应始终以self开头。

现在,我不确定如何计算GPA(我使用的是不同的系统),但根据一些相当谷歌的查询,你的更新方法应该是这样的:

def update(self, newunits, GPE):
    GPE_earned_before = self.GPA * self.units
    total_GPE = GPE_earned_before + GPE
    self.GPA = total_GPE / (self.units + newunits)
    self.units += newunits

我在这里使用了很多变量来说清楚,但这可以简化为:

def update(self, newunits, GPE):
    self.GPA = (self.GPA * self.units + GPE) / (self.units + newunits)
    self.units += newunits