Skip to content

Instantly share code, notes, and snippets.

@Zer0xFF
Created April 16, 2022 06:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Zer0xFF/7bb536d42756b1400576e602b284c8ae to your computer and use it in GitHub Desktop.
Save Zer0xFF/7bb536d42756b1400576e602b284c8ae to your computer and use it in GitHub Desktop.
moodle avg grade calculator
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