Python基本統計值計算


描述

這是"實例"題,與課上講解實例相同,請作答檢驗學習效果。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

獲取以逗號分隔的多個數據輸入(輸入為一行),計算基本統計值(平均值、標准差、中位數)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

除中位數外,其他輸出保留小數點后兩位。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

請補充編程模板中代碼完成‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

輸入輸出示例

  輸入 輸出
示例 1
1,3,6,9,2,5,1
平均值:3.86,標准差:2.97,中位數:3

 

 

就光顧着他說和上課一樣了。

不然,這里是一行以逗號分隔完成輸入,而上課講的是每次輸入一個數:

nums = []
    numstr = input("請輸入數字(回車退出):")
    while numstr != '':
        nums.append(eval(numstr))
        numstr = input("請輸入數字(回車退出):")

 

 

所以這里需要這樣:

def getNum():       #獲取用戶不定長度的輸入
    nums = []
    iNumstr = input().split(",")
    for i in iNumstr:
        nums.append(eval(i))
    return nums
        
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 = sorted(numbers)
    size = len(numbers)
    if size % 2 == 0:
        med = (numbers[size//2]+numbers[size//2-1])/2
    else:
        med = numbers[size//2]
    return med
    
n =  getNum() #主體函數
m =  mean(n)
print("平均值:{:.2f},標准差:{:.2f},中位數:{}".format(m,\
dev(n,m),median(n)))

  並且這個sorted函數太壞了。

sort()方法語法:

list.sort(cmp=None, key=None, reverse=False)

  • cmp -- 可選參數, 如果指定了該參數會使用該參數的方法進行排序。
  • key -- 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序。
  • reverse -- 排序規則,reverse = True 降序, reverse = False 升序(默認)。

 

而還有一個sorted:

sort 與 sorted 區別:

sort 是應用在 list 上的方法,sorted 可以對所有可迭代的對象進行排序操作。

list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。

sorted 語法:

sorted(iterable, key=None, reverse=False)


區別即:

 

 和

 

 

所以用sorted時,一定要送佛送到佛歸西。

numbers = sorted(numbers)

 

 

 

下面為答案:

#請在...補充一行或多行代碼
#CalStatisticsV1.py
def getNum():       #獲取用戶不定長度的輸入
    nums = []
    iNumstr = input().split(",")
    for i in iNumstr:
        nums.append(eval(i))
    return nums
        
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 = sorted(numbers)
    size = len(numbers)
    if size % 2 == 0:
        med = (numbers[size//2]+numbers[size//2-1])/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