typestar

grade_report.php en PHP

Promedios por estudiante, calificaciones con letra y una tabla resumen del grupo.

<?php
// grade_report: per-student averages and a class summary

$scores = [
    "Ada"    => [92, 88, 95],
    "Grace"  => [79, 85, 91],
    "Alan"   => [88, 72, 80],
    "Edsger" => [96, 90, 98],
];

function letter(float $avg): string {
    return match (true) {
        $avg >= 90 => "A",
        $avg >= 80 => "B",
        $avg >= 70 => "C",
        default    => "F",
    };
}

$averages = [];
foreach ($scores as $name => $marks) {
    $averages[$name] = array_sum($marks) / count($marks);
}
arsort($averages);

echo str_pad("student", 10), str_pad("avg", 8), "grade\n";
foreach ($averages as $name => $avg) {
    printf("%-10s%-8.1f%s\n", $name, $avg, letter($avg));
}

$classAvg = array_sum($averages) / count($averages);
printf("class average: %.1f\n", $classAvg);
echo "top student: ", array_key_first($averages), "\n";

Cómo funciona

  1. Cada estudiante mapea a un arreglo de puntajes; array_sum los promedia.
  2. match (true) convierte un promedio en calificación con letra.
  3. arsort ordena a los estudiantes de mejor a peor; printf alinea las columnas.
  4. array_key_first nombra al mejor estudiante tras el ordenamiento.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
33
Caracteres a escribir
765
Tokens
208
Ritmo de tres estrellas
85 tpm

Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 147 segundos.

Escribe este fragmento

Paso 2 de 3 en Bis; paso 26 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →