我试图编写一个程序来读取CSV
学生分数列表并执行以下操作:
该程序计算每个学生的考试平均值,并使用math ceil将其四舍五入为整数,然后将名称和考试平均值写入另一个名为csv
的{{1}}文件名称和分数学生在最高分数的5分以内,例如,如果最高分为98分,则应打印所有得分≥> 93的学生。
在0 - 59,60 - 69,70 - 79,80 - 89,90 - 100范围内得分的学生人数(为了跟踪范围,你应该设置一个大小为5的计数器列表;当你处理第一个范围内的数字,更新位置0,第二个范围,位置1等。
我很难相处。这是我到目前为止编写的代码:
examScores.csv
我无法使用数学细胞功能,而且我的追加功能也不起作用。当然,我不希望任何人为我解决这个问题,只需要提示或推动正确的方向。
答案 0 :(得分:0)
既然你要求提示,我会试一试。
请注意,您要分别记录姓名和成绩。更有用的是将这些值记录在一致的数据结构中。我更喜欢列表清单。从
开始records = []
遵循文件读取,行拆分和值提取。然后将其插入记录中。
records.append([average, last_name, first_name])
在循环结束时,按第一列按降序对记录进行排序。提示:google" python list of list sorted lambda"。从排序列表中,选择最大值和它下面的5个点。我将把它作为练习留给你。
您还可以使用排序列表拆分为不同的范围。提示:google" python bisect package"。
关于math.ceil的问题,请尝试
average = math.ceil(0.5* (float(data[2]) + float(data[3])))
如果需要更多提示,请告诉我。 : - )