任務描述
參與者可分階段送出容器鏡像完成以下3個任務(分數依次占 30/30/40),根據評分系統的分數傳回驗證任務的完成情況。
- 輸出
Hello world
- 計算
中一列數字的總和。/tcdata/num_list.csv
- 在
檔案中尋找最大的10個數,從大到小生成一個List_List_./tcdata/num_list.csv
num_list.csv
檔案中隻有一列不為負的整數,其中存在重複值,示例如下:
102
6
11
生成入口腳本
run.sh
,放置于鏡像工作目錄。運作後生成結果
result.json
放置于工作目錄(與
run.sh
同目錄),評分系統将根據
result.json
進行打分。json檔案如下所示:
{
"Q1":"Hello world",
"Q2":sum值,
"Q3":[top10_list]
}
實作過程
- 建立 公開容器鏡像倉、并選擇github為代碼源
- 配置并建構 觸發器
- 通過IDE完成實作代碼并 生成Dockerfile
- 送出代碼到github、并驗證鏡像倉庫建構日志
- 送出 鏡像位址:容器版本 到天池
核心代碼簡述
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()