2016-01-26 2 views
0

Мне нужно было создать код для викторины для студентов, и это было сделано успешно.
Теперь мне нужно было создать код, в котором пользователь должен был зарегистрироваться как ученик или учитель (работающий на сайте учителя), и в основном учитель может выбрать, чтобы манипулировать результатами учащихся из теста (результаты сохраняются в файле 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, и это где все результаты студентов сохраняются образуют викторины)
Таким образом, в заключение, я хочу, мой код для сортировки результатов Average от самого высокого до низкий.

+0

Как выглядит этот файл csv? – L3viathan

+0

Вы пробовали загрузить файл в список и [сортировка] (https://wiki.python.org/moin/HowTo/Sorting)? – glibdud

+0

http://imgur.com/7i7M6yj Это файл csv. – KacperS

ответ

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

Спасибо, но в файле Excel есть 5 результатов викторины, а не 1. Так что спасибо Рику за ответ, но он управляет только 1 счетом пользователей, а не всего 5. – KacperS

+0

Просьба привести пример файла csv. – Rick

+0

http://imgur.com/7i7M6yj Это один из моих файлов Excel. Есть еще 2, но они одинаковы, имена и баллы просто не совпадают. – KacperS