回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我需要帮助来计算每个员工的平均工资。<br/>
这是我目前的代码。你知道吗</p>
<pre><code>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))
</code></pre>
<p>我的问题是,每次调用<code>Associate.avgPay</code>时,它都会将上一次调用的平均值相加,而不是将<code>self.pay</code>相加。<br/>
电流输出:</p>
<pre><code>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
</code></pre>
<p>正确输出:</p>
<pre><code>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
</code></pre>
<p>任何帮助都将不胜感激。你知道吗</p>