2 回答

TA貢獻1820條經驗 獲得超2個贊
你的方差公式是錯誤的。你可以在這里找到公式以便更好地理解,我這里就不解釋了。
mean = 0
variance = 0
x = 0
n = 0
while x >= 0:
? ? x = float(input('Input a positive number: '))? # user input for code
? ? n += 1
? ? if x < 0:
? ? ? ? break
? ? if n == 1:? # Added this if statement to avoid dividing by 0
? ? ? ? mean = x
? ? ? ? print('mean is ', mean, 'variance is ', variance)
? ? else:
? ? ? ? mean = mean + ((x-mean)/n)? # formula for calculating mean
? ? ? ??
? ? ? ? variance = (((n-2)/(n-1)) * variance) + (((x-mean)*(x-pre_mean))/(n-1))? # formula for calculating variance
? ? ? ? print('mean is ', mean, 'variance is ', variance)
? ? pre_mean = mean
輸出:
Input a positive number: 1
mean is? 1.0 variance is? 0
Input a positive number: 2
mean is? 1.5 variance is? 0.5
Input a positive number: 3
mean is? 2.0 variance is? 1.0
Input a positive number: 4
mean is? 2.5 variance is? 1.6666666666666665
你給出了一個錯誤的測試用例,
Input a positive number: 3
mean is? 2.0 variance is? 0.1
在這里,方差將1 not 0.1。您可以使用在線計算器輕松檢查樣本方差。

TA貢獻1794條經驗 獲得超7個贊
您可以使用列表來存儲所有輸入。
x = 0
data = []
while x >= 0:
x = float(input('Input a positive number: ')) # user input for code
if x < 0:
break
data.append(x)
N = len(data)
mean = sum(data) / N
var = 0
if N > 1:
a = [x - mean for x in data]
a = [x**2 for x in a]
var = sum( a) / (N-1)
print( "mean is ", mean, " variance is ", var)
添加回答
舉報