【发布时间】:2016-03-24 15:14:35
【问题描述】:
我正在尝试编写一个程序来读取CSV 学生分数的列表并执行以下操作:
程序计算每个学生的考试平均值,并使用数学 ceil 将其四舍五入为整数,然后将姓名和考试平均值写入另一个名为 csv 的文件 examScores.csv 5 分以内学生的姓名和分数的最高分,例如如果最高分是 98,则应打印所有得分 >= 93 的学生。
得分在 0 – 59、60 – 69、70 – 79、80 – 89、90 – 100 范围内的学生人数(要跟踪范围,您应该设置一个大小为 5 的计数器列表;当您处理第一个范围内的数字,您更新位置 0,在第二个范围内,位置 1 等)。
我对此感到相当困难。这是我到目前为止编写的代码:
inpt1=open("grades.csv","r")
outpt1=open("examscores.csv","w")
studentname=[]
studentlastname=[]
gradeav=[]
highav=0
inpt1.readline()
for line in inpt1:
data=line.split(",")
averages=math.ceil(data[2])+float(data[3])/2
studentname.append(data[0])
studentlastname.append(data[1])
gradeav.append(averages)
inpt1.close()
outpt1.close()
我无法让数学 ceil 函数工作,并且我的附加功能也无法正常工作。当然,我不希望任何人为我解决这个问题,只需要提示或朝着正确的方向前进。
【问题讨论】:
-
我建议查看涵盖正确打开和读取 csv 文件的线程,将这些数据保存到列表中,并对列表进行平均处理。您的代码中有几个错误,所有这些错误都在此处的所有 3 个很好的示例中进行了解释。最终使用字典列表来存储数据可能更容易,但如果过于复杂,您可以在技术上坚持使用一堆单独的列表。