各アソシエートの平均給料を計算するのに役立つ必要があります。
ここに私が現在持っているコードがあります。クラス内の既存のオブジェクトの平均を調べようとしています
class Associate:
ID = 0;
avgPay = 0.0
def __init__(self, ID, name, pay):
self.ID = ID
self.name = name
self.pay = pay
Associate.ID += 1
Associate.avgPay = (pay + Associate.avgPay)/Associate.ID
def speak(self):
print('Name: ', self.name,'Pay: ', self.pay)
a1 = Associate('A111','Emily',85000)
a1.speak()
print("ID = {0}, avgPay = {1}".format(Associate.ID,Associate.avgPay))
a2 = Associate('A222','Bob',88000)
a2.speak()
print("ID = {0}, avgPay = {1}".format(Associate.ID,Associate.avgPay))
a3 = Associate('A333','John',92000)
a3.speak()
print("ID = {0}, avgPay = {1}".format(Associate.ID,Associate.avgPay))
a4 = Associate('A444','Tom',77000)
a4.speak()
print("ID = {0}, avgPay = {1}".format(Associate.ID,Associate.avgPay))
私の問題は、それがAssociate.avgPay
を呼び出すたびに、それは代わりにself.pay
を追加する前の呼び出しからの平均を追加するということです。
電流出力:
Name: Emily Pay: 85000
ID = 1, avgPay = 85000.0
Name: Bob Pay: 88000
ID = 2, avgPay = 86500.0
Name: John Pay: 92000
ID = 3, avgPay = 59500.0
Name: Tom Pay: 77000
ID = 4, avgPay = 34125.0
正しい出力:
Name: Emily Pay: 85000
ID = 1, avgPay = 85000.0
Name: Bob Pay: 88000
ID = 2, avgPay = 86500.0
Name: John Pay: 92000
ID = 3, avgPay = 88333.33333
Name: Tom Pay: 77000
ID = 4, avgPay = 85500.0
任意の助けをいただければ幸いです。
平均はそのようには機能しません。すべての支払いのリストが必要 –