将一组学生的三门课成绩写到文件中,然后从文件中读取数据,计算每人的平均分(结果保留2位小数),将结果写到另一个文件中

阶段测试:将一组学生的三门课成绩写到文件中,一行存放一个学生的成绩,各字段间用逗号分隔,如:王芳,80,90,95 。然后从文件中读取数据,计算每人的平均分(结果保留2位小数),将结果写到另一个文件中,如:王芳,89.5




with open('student_mark.txt', encoding='utf-8') as f:
    lst = f.readlines()
    student_mark = {}
    for i in lst:
        tmp = i.strip().split(",")
        for j in range(len(tmp)):
            tmp[j] = tmp[j].strip()
        student_mark[tmp[0]] = round((float(tmp[1]) + float(tmp[2]) + float(tmp[3])) / 3, 1)

with open("average_mark.txt", 'w', encoding='gbk') as f_o:
    for i in student_mark.keys():
        f_o.write(i + ", " + str(student_mark[i]) + "\n")

当然读入和输出文件的名字是可以改的,但是最好用英文
望采纳,谢谢

你这个是先在程序里面把成绩录入,然后保存到文件里面,再读取出来,再计算,再保存吧

这个很简单,用将成绩写进一个数组或者字典里面,用pandas保存csv或者excel文件,指定好路径,再定义一个变量读取文件,pandas就有平均分的函数,直接调用,然后再用pandas保存文件就行

import time
import pandas as pd


def sumcore(filename):
    try:
        data = pd.read_csv(filename, header=None)
        _ = []
        for i in data.values:
            _.append([i[0],,round(( i[1] + i[2] + i[3])/3,2)])
        dt = pd.DataFrame(_)
        dt.to_csv(f'sum{time.time()}.csv', index=False, header=False)
    except:
        print('请输入正确明文件名')


if __name__ == '__main__':
    filename = input("请输入文件名")
    sumcore(filename)

测试文件

img

运行结果

img

img

有帮助请采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力

个人感觉难点主要在于数据输入和读取:
1.按照学生个数和科目数读取数据;

file_dir = os.getcwd()
a = list()
number = int(input('学生个数:'))
number_sub = int(input('科目数:'))
with open(file_dir + '/grade.txt',"w", encoding='utf-8') as f:
    for i in range(number):
        a = input('学生姓名:').split(',')
        f.write("%s"%a+",") 
        for j in range(number_sub):
            if j==number_sub-1:
                b = float(input('学生科目%s成绩:'%(j+1)))
                f.write("%f\n"%b) 
            else :
                b = float(input('学生科目%s成绩:'%(j+1)))
                f.write("%f"%b+",") 

img

2.文件保存为txt形式;
3.读取数据后直接计算即可
贴结果:

img

其实你可以自己先存到Excel里面,python有很多对Excel进行操作的库,这样也方便你自己查看