习题解答:将学生的各科考试成绩保存为csv文件格式

1.题目要求

将学生的各科考试成绩保存为csv文件格式。

2.设计要求

(1)已知学生的学号和各科成绩:

data = [
    ['99100', 90,  100, 91, 80,],
    ['99101', 89,  95,  99, 80],
    ['99102', 87,  90,  67, 100],
    ['99103', 100, 99,  95, 90],
    ['99104', 78,  80,  86, 88]
]

(2)计算每位学生的总分,连同各科成绩,一起写入文件“PY_08_06_Scores.csv”。

(3)将文件“PY_08_06_Scores.csv”中的首行设置为标题行,字段名称分别为’学号’, ‘语文’, ‘数学’, ‘英语’, ‘python’, ‘总分’。

3.设计思路

(1)采用列表嵌套方法,存放学号以及对应的成绩。

(2)采用writer对象的writerowa方法写入文件。

# 导入CSV模块
import csv 

# 新建嵌套列表data存储学号和成绩
data = [
    ['99100', 90,  100, 91, 80,],
    ['99101', 89,  95,  99, 80],
    ['99102', 87,  90,  67, 100],
    ['99103', 100, 99,  95, 90],
    ['99104', 78,  80,  86, 88]
]

# 用for循环计算依次计算每个学生的总成绩
for i in range(5):
    # 总成绩=每个子列表后4个元素的和
    # data[i]依次取出子列表
    # [1:5]取出子列表中的第2个至第5个元素
    # sum函数计算子列表的和
    total_score = sum(data[i][1:5])
    # append函数向列表增加元素
    data[i].append(total_score)
# 查看最终生成的列表
#print(data)

# 新建head变量存储标题行
head = ['学号', '语文', '数学', '英语', 'python', '总分']

# 以自动关闭文件的方式写入
# PY_08_06_Scores.csv文件路径(和代码在同一文件夹)
# w写入方式
# encoding='utf-8'编码方式
# newline=''去除CSV文件中的空行
with open('PY_08_06_Scores.csv', 'w', encoding='utf-8', newline='') as f:
    
    # 调用模块的类:模块名.类名()
    csv_writer = csv.writer(f)
    # 写入标题
    csv_writer.writerow(head)
   
    for i in range(5):
        # 调用类中的方法:对象.方法名()
        # writerow每次只能写入一行
        csv_writer.writerow(data[i])
    
print('写入完毕!')

【终端输出】

写入完毕!
writerow每次只能写入一行,所以用for循环依次取出列表中的子列表
for i in range(5):
        # 调用类中的方法:对象.方法名()
        # writerow每次只能写入一行
        csv_writer.writerow(data[i])
writerows一次性写入多行:
csv_writer.writerow(data)
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐