我需要为学生创建一个测验代码,并且已成功完成 现在,我必须创建一个代码,用户必须将自己注册为学生或教师(在教师网站上工作),基本上教师可以选择操纵学生的测验结果(结果存储在Excel文件)。我做过按字母顺序排列,最高到最低,平均。现在老师要我做从最高到最低的平均值!
这是我的平均代码,我想从最高到最低添加。
def Sort_Average1():
class1=open('Class A.csv', 'r')
for row in csv.reader(class1, delimiter=','):
values = (row[1:4])
valueslist = list(map(int, values))
av = round(sum(valueslist)/len(valueslist),1)
print(row[0],av)
(A.csv类是一个Excel文件,这是学生的所有结果都存储在测验中的颜色)
总而言之,我想要的是,我的代码将结果平均值从最高到最低排序。
答案 0 :(得分:0)
只需记录您获得的平均结果并进行排序。
import operator
import csv
import math
def Sort_Average1(csv_file):
score = {}
with open(csv_file, 'r') as class1:
for row in csv.reader(class1, delimiter=','):
results = map(float, row[1:5])
# for the floor of average
floor = math.floor(sum(results)/len(results))
# for the round of average
rounding = round(sum(results)/len(results))
# for the true average
av = sum(results)/len(results)
print(row[0],av)
# row[0] is the student's id
# score[student's id] = average
score[row[0]] = av
# this will do a sort on score from large to small
sorted_score = sorted(score.items(), key=operator.itemgetter(1), reverse=True)
# return a list of tuples sorted by the score
return sorted_score
print Sort_Average1("Class A.csv")
>>> ('Tyrone', 4.5)
>>> ('Hrabia', 6.0)
>>> ('Patrishka', 6.75)
>>> ('FilFrank', 2.5)
>>> ('Kacper', 7.5)
>>> [('Kacper', 7.5), ('Patrishka', 6.75), ('Hrabia', 6.0), ('Tyrone', 4.5), ('FilFrank', 2.5)]