CodeSprout程式萌芽
困難第 428 題 · 讀值校正報表
CodeSprout 官方2026/10/04 00:19
官方解答 · 置頂Python

官方解答|讀值校正報表

官方解答

Python #428:讀值校正報表

解題規則

感測站先挑選並校正讀值,再對校正後的資料製作統計摘要。

保留「原數值大於0」的項目,每個保留項用 math.floor 向下取整,順序不變。回傳 [轉換後清單,轉換後數值的第一眾數,並列時取先出現者]。沒有保留項時第二項為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 = [1, 4];index = 3;value = 4.5。最後回傳 [[1, 4], 1]。結果由 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.floor(value))
    summary = statistics.mode(result) if result else 0
    return [result, summary]

留言討論 0