平均值从最高到最低

时间:2016-01-26 10:34:52

标签: python

我需要为学生创建一个测验代码,并且已成功完成 现在,我必须创建一个代码,用户必须将自己注册为学生或教师(在教师网站上工作),基本上教师可以选择操纵学生的测验结果(结果存储在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文件,这是学生的所有结果都存储在测验中的颜色)
总而言之,我想要的是,我的代码将结果平均值从最高到最低排序。

1 个答案:

答案 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)]