1. 程式人生 > 實用技巧 >Python基本統計值計算

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