天天看點

Python打卡天池Docker練習場

任務描述

參與者可分階段送出容器鏡像完成以下3個任務(分數依次占 30/30/40),根據評分系統的分數傳回驗證任務的完成情況。

  • 輸出

    Hello world

  • 計算

    /tcdata/num_list.csv

    中一列數字的總和。
  • /tcdata/num_list.csv

    檔案中尋找最大的10個數,從大到小生成一個List_List_.

num_list.csv

檔案中隻有一列不為負的整數,其中存在重複值,示例如下:

102

6

11

生成入口腳本

run.sh

,放置于鏡像工作目錄。運作後生成結果

result.json

放置于工作目錄(與

run.sh

同目錄),評分系統将根據

result.json

進行打分。json檔案如下所示:

{  
    "Q1":"Hello world", 
    "Q2":sum值, 
    "Q3":[top10_list] 
}           

實作過程

  1. 建立 公開容器鏡像倉、并選擇github為代碼源
  2. 配置并建構 觸發器
  3. 通過IDE完成實作代碼并 生成Dockerfile
  4. 送出代碼到github、并驗證鏡像倉庫建構日志
  5. 送出 鏡像位址:容器版本 到天池

核心代碼簡述

import os
import json
import csv



def read():
#通過csv庫讀取csv檔案并轉換成int類型清單
    with open('/tcdata/num_list.csv') as csvfile:
        reader = csv.reader(csvfile)
        rows = [row[0] for row in reader]  #周遊擷取第一列的值
        int_list = [int(x) for x in rows]  #将字元串類型清單轉換成int類型
        int_list.sort(reverse=True)  #排序
        return int_list


def sum(list, size):
#求和
    if (size == 0):
        return 0
    else:
        return list[size - 1] + sum(list, size - 1)


def save_json():
#将結果存入字典并輸出成json檔案
    with open('result.json', 'w', encoding='utf-8') as f:
        dit = {'Q1': 'Hello world', 'Q2': sum_number, 'Q3': top10_list}
        json.dump(dit, f, ensure_ascii=False)
        f.close


if __name__ == "__main__":
    list = read()
    sum_number = sum(list, len(list))
    top10_list = list[:10]
    # print(sum_number,top10_list)
    save_json()           

附件

GitHubDesktop Vscode配置jupyter調試工具 代碼倉庫位址