Last active
June 9, 2018 16:52
-
-
Save Alex-CD/3f0da798464fb3d6a7471f7806f98ea9 to your computer and use it in GitHub Desktop.
Calculates Pass/Fail ratios on preliminary results released by RHUL.
This file contains 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
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