Spaces:
Runtime error
Runtime error
import gradio as gr | |
class GPACalculator: | |
def __init__(self): | |
self.grade_tables = { | |
"Tier III": { | |
100: 6.0, 99: 5.9, 98: 5.8, 97: 5.7, 96: 5.6, 95: 5.5, 94: 5.4, 93: 5.3, 92: 5.2, 91: 5.1, | |
90: 5.0, 89: 4.9, 88: 4.8, 87: 4.7, 86: 4.6, 85: 4.5, 84: 4.4, 83: 4.3, 82: 4.2, 81: 4.1, | |
80: 4.0, 79: 3.9, 78: 3.8, 77: 3.7, 76: 3.6, 75: 3.5, 74: 3.4, 73: 3.3, 72: 3.2, 71: 3.1, | |
70: 3.0, 'Below 70': 0 | |
}, | |
"Tier II": { | |
100: 5.5, 99: 5.4, 98: 5.3, 97: 5.2, 96: 5.1, 95: 5.0, 94: 4.9, 93: 4.8, 92: 4.7, 91: 4.6, | |
90: 4.5, 89: 4.4, 88: 4.3, 87: 4.2, 86: 4.1, 85: 4.0, 84: 3.9, 83: 3.8, 82: 3.7, 81: 3.6, | |
80: 3.5, 79: 3.4, 78: 3.3, 77: 3.2, 76: 3.1, 75: 3.0, 74: 2.9, 73: 2.8, 72: 2.7, 71: 2.6, | |
70: 2.5, 'Below 70': 0 | |
}, | |
"Tier I": { | |
100: 5.0, 99: 4.9, 98: 4.8, 97: 4.7, 96: 4.6, 95: 4.5, 94: 4.4, 93: 4.3, 92: 4.2, 91: 4.1, | |
90: 4.0, 89: 3.9, 88: 3.8, 87: 3.7, 86: 3.6, 85: 3.5, 84: 3.4, 83: 3.3, 82: 3.2, 81: 3.1, | |
80: 3.0, 79: 2.9, 78: 2.8, 77: 2.7, 76: 2.6, 75: 2.5, 74: 2.4, 73: 2.3, 72: 2.2, 71: 2.1, | |
70: 2.0, 'Below 70': 0 | |
} | |
} | |
def calculate_gpa(self, grades, previous_gpa): | |
total_points = previous_gpa * sum(len(grade_list) for grade_list in grades.values()) | |
total_courses = sum(len(grade_list) for grade_list in grades.values()) | |
for tier, tier_grades in grades.items(): | |
if tier_grades: # Check if there are grades in the tier | |
for grade in tier_grades: | |
total_points += self.grade_tables[tier].get(grade, 0) | |
total_courses += 1 | |
if total_courses == 0: | |
return 0 # Avoid division by zero | |
return total_points / total_courses | |
calculator = GPACalculator() | |
def calculate_gpa_interface(grades_tier_1, grades_tier_2, grades_tier_3, previous_gpa): | |
grades_tier_1 = [int(x.strip()) for x in grades_tier_1.split(",")] | |
grades_tier_2 = [int(x.strip()) for x in grades_tier_2.split(",")] | |
grades_tier_3 = [int(x.strip()) for x in grades_tier_3.split(",")] | |
grades = { | |
"Tier I": grades_tier_1, | |
"Tier II": grades_tier_2, | |
"Tier III": grades_tier_3 | |
} | |
gpa = calculator.calculate_gpa(grades, float(previous_gpa)) | |
return str(gpa) | |
# Create Gradio interface | |
title = "GPA Calculator for FISD" | |
instructions = "Enter your grades for on-level, advanced, and AP courses, along with your previous GPA." | |
demo = gr.Interface(fn=calculate_gpa_interface, | |
inputs=[gr.Textbox(label="On-level Grades", lines=2), | |
gr.Textbox(label="Advanced Grades"), | |
gr.Textbox(label="AP Grades"), | |
gr.Textbox(label="Previous GPA")], | |
outputs=[gr.Textbox(label="Calculated GPA")], | |
title=title, | |
description=instructions) | |
if __name__ == "__main__": | |
demo.launch() |