Skip to content

Instantly share code, notes, and snippets.

@Alex-CD
Last active June 9, 2018 16:52
Show Gist options
  • Save Alex-CD/3f0da798464fb3d6a7471f7806f98ea9 to your computer and use it in GitHub Desktop.
Save Alex-CD/3f0da798464fb3d6a7471f7806f98ea9 to your computer and use it in GitHub Desktop.
Calculates Pass/Fail ratios on preliminary results released by RHUL.
class Subject:
passes = 0
fails = 0
def pass_(self):
self.passes += 1
def fail(self):
self.fails += 1
def print_count(self):
print(str(self.passes) + "P:" + str(self.fails) + 'F\n')
def get_pass_percentage(self):
if (self.passes + self.fails) == 0:
return 0
return (float(self.passes) / (float(self.passes) + float(self.fails)))*100
with open('results.txt', 'r') as results_file:
results_lines = results_file.readlines()
current_subject_index = 0
current_grade_index = 8
subjects = dict()
while current_grade_index < results_lines.__len__() and current_subject_index < results_lines.__len__():
current_subject = results_lines[current_subject_index]
current_grade = results_lines[current_grade_index]
# Evaluating Pass/Fail
if current_subject not in subjects:
subjects[current_subject] = Subject()
if current_grade == 'Pass\n':
subjects[current_subject].pass_()
elif current_grade == 'Fail\n':
subjects[current_subject].fail()
else:
print("Error identifying: " + current_grade)
current_subject_index += 1
current_grade_index += 1
# Checking if indexes have advanced into next block of grades/results
while current_subject_index < results_lines.__len__() and results_lines[current_subject_index][0] != 'C' and results_lines[current_subject_index][0] != 'I':
current_subject_index += 1
while current_grade_index < results_lines.__len__() and results_lines[current_grade_index][0] != 'P' and results_lines[current_grade_index][0] != 'F':
current_grade_index += 1
# Printing results
for key in subjects:
print("Subject: " + key + str(subjects[key].get_pass_percentage()) + "% of students passed")
subjects[key].print_count()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment