Solución
solution.tsTypeScript
PASSING_SCORE: int = 60
THRESHOLD_A: int = 90
THRESHOLD_B: int = 80
THRESHOLD_C: int = 70
THRESHOLD_D: int = 60
BONUS_MATH: int = 10
BONUS_SCIENCE: int = 5
def calculate_average(scores: list[int]) -> float:
if not scores:
return 0.0
return round(sum(scores) / len(scores), 1)
def determine_letter_grade(average: float) -> str:
if average >= THRESHOLD_A: return "A"
if average >= THRESHOLD_B: return "B"
if average >= THRESHOLD_C: return "C"
if average >= THRESHOLD_D: return "D"
return "F"
def calculate_bonus(subject: str, average: float) -> int:
subject_lower: str = subject.lower()
if subject_lower == "math" and average >= THRESHOLD_A:
return BONUS_MATH
if subject_lower == "science" and average >= THRESHOLD_B:
return BONUS_SCIENCE
return 0
def process_student_grades(scores: list[int], subject: str) -> dict:
average: float = calculate_average(scores)
letter_grade: str = determine_letter_grade(average)
is_passing: bool = average >= PASSING_SCORE
bonus_points: int = calculate_bonus(subject, average)
return {
"average" : average,
"grade": letter_grade,
"passed": is_passing,
"bonus": bonus_points
}
__all__ = ["process_student_grades"]0respuestas