AI & Data Dreamers練功房
寶箱片場規則
PIPELINE GATES・資料工程關卡・中階・4 題

資料工程中階・清洗、彙總與配對

這一頁是題幹試閱;登入/註冊後每題可以在瀏覽器裡執行、對答案,第一次交對 +10 XP。

  1. 01

    函數的練習

    容易

    會員資料裡的手機號碼格式很亂。請寫一個函數 normalize_phone(s),規則如下:

    1. 只保留數字(去掉空白、橫線、括號、加號)
    2. 若以 886 開頭,把開頭的 886 換成 0
    3. 結果必須是 10 碼且以 09 開頭,回傳 'XXXX-XXX-XXX' 格式;否則回傳 '格式錯誤'

    用以下資料(hard code 於程式中)逐筆呼叫並印出「原始值 -> 結果」:

    raw = ['0912-345-678', '+886 912 345 678', '(02)2345-6789', '0912345', '886-987-654-321']

    作答登入後可作答
  2. 02

    綜合的練習

    容易

    以下是訂單資料,每筆是(城市, 金額)的 tuple(資料 hard code 於程式中):

    orders = [('台北', 1200), ('台中', 800), ('台北', 450), ('高雄', 990), ('台中', 1500), ('台北', 300), ('高雄', 210)]

    不使用 pandas,用字典做「分組彙總」:算出每個城市的訂單數與總金額,

    依總金額由大到小印出。

    輸出格式(每個城市一行):

    城市 筆數 筆 總額 元

    作答登入後可作答
  3. 03

    迴圈的練習

    中等

    以下是一週每天的新註冊人數(資料 hard code 於程式中):

    signups = [12, 18, 9, 21, 30, 15, 24]

    輸入視窗大小 k,計算「k 日移動平均」:從第 k 天起,每天取包含當天在內的前 k 天平均(四捨五入到小數第 1 位)。

    若 k 小於 1 或大於資料天數,印出「視窗大小錯誤」。

    輸出格式(第 k 天開始每天一行):

    第 (天數) 天: (平均)

    作答登入後可作答
  4. 04

    函數的練習

    中等

    商品清單如下(資料 hard code 於程式中,名稱不重複):

    items = [('耳機', 120), ('滑鼠', 380), ('鍵盤', 260), ('螢幕線', 240), ('隨身碟', 120), ('筆電包', 140)]

    輸入預算金額,找出所有「剛好兩件商品金額加起來等於預算」的組合。

    請寫函數 find_pairs(items, budget),回傳組合串列;每個組合以 (前面的商品, 後面的商品) 表示,

    依「後面那件商品在清單中的位置」排序,同一位置再依前面那件的位置排序。

    要求:用字典記錄「已看過的金額 → 商品名稱串列」,只走訪清單一次,不使用雙層迴圈比對所有組合。

    找不到時印出「沒有符合的組合」。

    輸出格式(每個組合一行):

    商品A + 商品B

    作答登入後可作答