描述
這是"實例"題,與課上講解實例相同,請作答檢驗學習效果。
獲取以逗號分隔的多個數據輸入(輸入為一行),計算基本統計值(平均值、標准差、中位數)
除中位數外,其他輸出保留小數點后兩位。
請補充編程模板中代碼完成
輸入輸出示例
| 輸入 | 輸出 | |
| 示例 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)))
