Skip to content

Instantly share code, notes, and snippets.

@xavdid
Last active December 22, 2015 08:18
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 xavdid/6443939 to your computer and use it in GitHub Desktop.
Save xavdid/6443939 to your computer and use it in GitHub Desktop.
Quidditch test grader script
import csv
cr = csv.reader(open("Quidditch Rules Quiz (Responses) - Form Responses.csv","rb"))
cr.next()
answers = cr.next()
# print answers
results = {}
totals = {'C':18,'B':18,'S':23,'R':25}
def sp(s, short=False):
if short:
return s + ' '*(11 - len(s))
else:
return s + ' '*(22 - len(s))
longest = 0
#scoring
for response in cr:
player = {}
name = response[len(response)-1].rstrip()
if len(name) > longest: longest = len(name)
player['attempts'] = 1
if name in results:
player['attempts'] = results[name]['attempts'] + 1
player['passed'] = False
player['name'] = name
player['position'] = response[1][0]
score = 0
i = 2
while i < (len(response)-1):
#jumps
if i == 19 and player['position'] == 'B':
i = 20
elif i == 19 and player['position'] == 'S':
i = 21
#breakpoints
if i == 20 and player['position'] == 'C':
break
elif i == 21 and player['position'] == 'B':
break
if answers[i] == response[i]:
score += 1
i += 1
player['score'] = score
results[player['name']] = player
if score == totals[player['position']]:
player['passed'] = True
#reporting grades
passes = []
# fails = []
# Print out the results
print sp('Names')+sp('Status',True) + sp('Score',True) + sp('Attempts',True) + 'Position'
print '='*63
for k in results:
player = results[k]
# s = "%s passed with %i out of %i after %i attempts"%(player['name'],player['score'], totals[player['position']], player['attempts'])
s = sp(player['name']) + sp('Pass',True) + sp(str(player['score']),True) + sp(str(player['attempts']),True) + player['position']
if not player['passed']:
s = s.replace('Pass','Fail')
# fails.append(player['name'])
else:
passes.append(player['name'])
print s
print '\nPasses:\n',passes
# print longest
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment