實例9:基本統計值計算
#計算基本統計值(平均值、標准差、中位數)除中位數外,其他輸出保留小數點后兩位
def getNum():
nums = []
iNumStr = input("請輸入數字(回車退出):")
while iNumStr != "": #死循環判斷為空退出,不為空就繼續輸入並添加到列表里
nums.append(eval(iNumStr))
iNumStr = input("請輸入數字(回車退出):")
return nums
#計算平均值,必須先求和,用總和數 除以 總個數等於平均值
def mean (numbers): #例:numbers=1,2,3 共3個數字
s = 0.0 #定義一個結果為0
for num in numbers:
s = s +num #和是1+2+3=6 那么s=6
return s / len(numbers) #6除以3等於平均值2
# 計算方差,需要算出平均值
def dev(numbers,mean): #兩參數用戶輸入列表和平均值
sdev = 0.0 #例:numbers=1,2,3,4 共4個數字 上一步算出平均值2.5
for num in numbers: #(1-2.5)**2==2.25 sdev=2.25
sdev = sdev + (num - mean)**2 #逐一取數減平均值再得出平方,累加到sdev里
return pow(sdev / (len(numbers)-1),0.5) #sdev除(4-1)==0.75的0.5次方==1.299
#計算中位數
def median(numbers):
numbers.sort() #進行原列表排序,使用sorted排序必須有返回值numbers = sorted(numbers)
size = len(numbers) #例:numbers=1,2,3,4 size=4
if size % 2 ==0: #判斷為偶數取中間兩位數,4//2-1 =1 切片是從0開始所以減1位
med = (numbers[size//2-1] + numbers[size//2])/2 #//為整除,/為浮點數
else: #或為奇數,切片總長度除2,取中間一位
med = numbers[size//2]
return med
n = getNum()
m = mean(n)
print("平均值:{},方差:{:.2},中位數:{}".format(m,dev(n,m),median(n)))
python123練習題:代碼大致一樣,input輸入不同 需轉換類型
def getNum(): # 獲取用戶不定長度的輸入 nums = eval(input()) # s = eval(input()) return list(nums) # nums = list(s) return nums #如果不轉換列表類型,則下方排序需使用numbers = sorted(numbers)來排序,此方法必須有返回值 def mean(numbers): # 計算平均值 s = 0.0 for num in numbers: s += num return s / len(numbers) def dev(numbers, mean): # 計算標准差 sdev = 0.0 for num in numbers: sdev = sdev + (num - mean) ** 2 return pow(sdev / (len(numbers) - 1), 0.5) def median(numbers): # 計算中位數 numbers.sort() #列表排序 size = len(numbers) if size % 2 == 0: med = (numbers[size//2-1] + numbers[size//2])/2 else: med = numbers[size//2] return med n = getNum() m = mean(n) print("平均值:{:.2f},標准差:{:.2f},中位數:{}".format(m, dev(n, m), median(n)))