从最高到最低的平均值

2024-04-20 11:57:09 发布

您现在位置: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)

(Class A.csv是一个Excel文件,学生的所有结果都存储在这里)
总之,我希望我的代码将结果从最高到最低进行平均排序。你知道吗


Tags: 文件csv代码用户网站字母教师excel
1条回答
网友
1楼 · 发布于 2024-04-20 11:57:09

只需记录你得到的平均结果,然后进行排序。你知道吗

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

相关问题 更多 >