任务描述
参与者可分阶段提交容器镜像完成以下3个任务(分数依次占 30/30/40),根据评分系统的分数返回验证任务的完成情况。
- 输出
Hello world
- 计算
/tcdata/num_list.csv
中一列数字的总和。 - 在
/tcdata/num_list.csv
文件中寻找最大的10个数,从大到小生成一个List_List_.
num_list.csv
文件中只有一列不为负的整数,其中存在重复值,示例如下:
102
6
11
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()