Created
April 16, 2022 06:13
-
-
Save Zer0xFF/7bb536d42756b1400576e602b284c8ae to your computer and use it in GitHub Desktop.
moodle avg grade calculator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import csv | |
with open("feedback.csv") as f: | |
dict_reader = csv.DictReader(f) | |
total = 0 | |
grade_total = 0 | |
ytotal = {} | |
ygrade_total = {} | |
for data in dict_reader: | |
data = dict(data) | |
course = data['Course'] | |
max_range = 0 | |
grade = 0 | |
if('Grade range' in data and data['Grade range']): | |
max_range = data['Grade range'].split(' - ')[-1].strip() | |
if(not max_range.isdigit()): | |
continue | |
max_range = int(max_range) | |
if('Grade' in data and data['Grade']): | |
grade = data['Grade'].strip() | |
if(not grade.isdigit()): | |
continue | |
grade = int(grade) | |
if(max_range == 0): | |
continue | |
total += 1 | |
print(f"{course}: {grade} / {max_range} = {grade/max_range * 100:.2f}") | |
grade_total += grade/max_range * 100 | |
year = course.split("_")[0] | |
if(year not in ytotal): | |
ytotal[year] = 0 | |
ygrade_total[year] = 0 | |
ytotal[year] += 1 | |
ygrade_total[year] += grade/max_range * 100 | |
print() | |
print() | |
for year in sorted(ytotal.keys()): | |
print(f"Year {int(year)-1}-{year} Average Grade: {ygrade_total[year] / ytotal[year]:.2f}") | |
print() | |
print(f"Average Grade: {grade_total / total:.2f}") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment