Python基本統計值計算
描述
這是"例項"題,與課上講解例項相同,請作答檢驗學習效果。
獲取以逗號分隔的多個數據輸入(輸入為一行),計算基本統計值(平均值、標準差、中位數)
除中位數外,其他輸出保留小數點後兩位。
請補充程式設計模板中程式碼完成
輸入輸出示例
輸入 | 輸出 | |
示例 1 |
|
|
就光顧著他說和上課一樣了。
不然,這裡是一行以逗號分隔完成輸入,而上課講的是每次輸入一個數:
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)))