官方解答 · 置頂Python
官方解答|讀值校正報表
官方解答
Python #420:讀值校正報表
解題規則
感測站先挑選並校正讀值,再對校正後的資料製作統計摘要。
保留「原數值大於0」的項目,每個保留項用 math.ceil 向上取整,順序不變。回傳 [轉換後清單,轉換後數值的下中位數]。沒有保留項時第二項為0。 第二項只使用篩選、轉換後的清單,不使用原清單的平均或其他統計量。
處理步驟
依原值與原索引篩選及轉換;回傳的統計量只使用轉換後結果,若結果為空直接用 0。程式中的 original_mean 是輔助值,不是回傳的摘要,也不參與篩選。
為何正確
標準模組函式各自實作所指定的日期、文字或統計運算。篩選依原值、轉換依保留項目、摘要依規定集合進行,因此輸出的資料來源與型態一致。
邊界與注意事項
本題輸入範圍:長度0~12;每個數為 -100~100。索引從0開始;所有平均值或統計量依題目規定處理空清單。 眾數並列時依原清單首次出現順序;round 的 .5 邊界依 Python 規則取最接近的偶數。
範例追蹤
依參數順序 values 傳入 [[-2.75,0.0,1.25,4.5]]。關鍵中間資料為 original_mean = 0.75;result = [2, 5];index = 3;value = 4.5。最後回傳 [[2, 5], 2]。結果由 return 回傳,不使用 print。
複雜度
設數量為 n;中位數等排序統計最壞時間 O(n log n),其他掃描統計為 O(n),中間資料及回傳資料最壞 O(n) 空間。
CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式
import math
import statistics
def solve(values):
original_mean = statistics.mean(values) if values else 0
result = []
for index, value in enumerate(values):
if value > 0:
result.append(math.ceil(value))
summary = statistics.median_low(result) if result else 0
return [result, summary]
留言討論 0
登入 後就能留言,一起討論不同的寫法。