python—基本統計值計算


 

實例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)))

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM