-7

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

それが私が思いつくことができるすべてです

4

2 に答える 2

3

うまくいけばあなたを助けるいくつかのポイントを見てみましょう:

コンストラクター(__init__

GPAまたはユニット数が負の場合は、0に設定します。

したがって、おそらくそれぞれを個別に確認する必要があります。

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

更新方法

メソッドは一般に、現在のオブジェクトへの参照を最初の引数として取り、self慣例に従って名前が付けられます(のように__init__)。したがって、updateメソッドの宣言は次のようになります。

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

これらは、オブジェクトから値を返すだけの単純なゲッターです。ここに単位の例があります。つまり、実際に必要な値を自分で把握する必要があります。

def get_units (self):
    return self.units

ゲッター(get_xメソッド)を使用するのはかなり非Python的であることに注意してください。これは、ユーザーがプロパティに直接アクセスすることを期待しているためです(慎重に処理している間)。

于 2012-12-11T21:32:36.573 に答える
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の計算方法についてはわかりませんが(私が住んでいる場合は別のシステムを使用しています)、いくつかのかなりのGoogleクエリによると、更新方法は次のようになります。

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
于 2012-12-11T21:24:18.100 に答える