【发布时间】:2017-11-28 04:43:02
【问题描述】:
我需要帮助来计算每位员工的平均工资。
这是我目前拥有的代码。
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
任何帮助将不胜感激。
【问题讨论】:
-
平均值不是这样的。您需要一份所有付款的清单
标签: python python-3.x class average