EOppi student grading

From wikiluntti
Revision as of 15:17, 31 January 2021 by Mol (talk | contribs) (→‎Part 2)

Introduction

Set the grades according to the points given to the exercises.

Theory

Save the database as a csv file and read it. Choose the exercises and run the python script.

#Python3

import csv
import math
import glob
import numpy as np

def getExeNames(titles):
    ti = []
    for title in titles[1:]:
        ti.append(title)
    return ti

def getRow(row):
    r = [row[0]]

    points = []
    for i,p in enumerate( row[1:] ):
        #Convert the numbers separated by space into a array of integers
        #Fetch the max value of and return those.
        #print( p )
        #print( [(i) for i in p.strip().split(' ')] )
        values = [int('0'+i) for i in p.strip().split(' ')]
        #print( values );
        r.append( max( values ))

    return r


Part 2

def removeFieldName(a, name):
    #https://stackoverflow.com/questions/15575878/how-do-you-remove-a-column-from-a-structured-numpy-array
    names = list(a.dtype.names)
    if name in names:
        names.remove(name)
    b = a[names]
    return b

def leaveFields(a, ns):
    names = list(a.dtype.names)

    #Find the corresponding names of fields that stay
    fields = []
    for n in ns:
        res = [i for i in names if n in i]
        fields.append( res[0] )

    #Find the difference and drop those---except the one named "Name"
    #https://www.w3resource.com/python-exercises/list/python-data-type-list-exercise-19.php
    diff1 = list( set(names) - set(fields) )
    diff2 = list( set(fields) - set(names) )
    diff = diff1 + diff2
    diff.remove("Name")
    for n in diff:
        a = removeFieldName(a, n)

    return a

Part 3

Part 4

Part 5

Part 6