阶段测试:将一组学生的三门课成绩写到文件中,一行存放一个学生的成绩,各字段间用逗号分隔,如:王芳,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)
测试文件
运行结果
有帮助请采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力
个人感觉难点主要在于数据输入和读取:
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+",")
2.文件保存为txt形式;
3.读取数据后直接计算即可
贴结果:
其实你可以自己先存到Excel里面,python有很多对Excel进行操作的库,这样也方便你自己查看