Menu
CoddyTech

Añadir estudiantes

Parte de la sección Lógica y flujo del Journey de R de Coddy. Lección 22 de 64.

En este proyecto crearás un libro de calificaciones que lee comandos, uno por línea, y responde a cada uno. A lo largo de cinco pasos, aprenderás a agregar estudiantes, registrar calificaciones, informar los promedios y encontrar al estudiante con la calificación más alta. Cada paso amplía la misma función gradebook(commands).

ADD ada
GRADE ada 90
AVG ada
REPORT
TOP

Las calificaciones se guardan en una lista con nombre: el nombre de cada estudiante se corresponde con un vector numérico de las calificaciones de ese estudiante. Una lista es adecuada porque cada estudiante tiene varios valores.

grades <- list()
grades[["ada"]] <- numeric(0)
grades[["ada"]] <- c(grades[["ada"]], 90)
print(length(grades[["ada"]]))
print(names(grades))

Salida:

[1] 1
[1] "ada"

numeric(0) es un vector numérico vacío. Asignar c() no funcionaría aquí: es NULL, y asignar NULL elimina una entrada de la lista.

Cada comando se divide en los espacios, así que parts[1] es el comando y parts[2] el nombre. Una cadena if / else if elige qué hacer:

for (cmd in commands) {
  parts <- strsplit(cmd, " ")[[1]]
  name <- parts[2]
  if (parts[1] == "ADD") {
    # maneja ADD
  }
}

Las respuestas se recopilan con replies <- c(replies, ...) y se devuelven al final.

challenge icon

Desafío

Fácil

Completa gradebook(commands) para el primer comando:

  • ADD <name>: si el estudiante es nuevo, guárdalo sin calificaciones y responde added <name>. Si el nombre ya está guardado, responde <name> already exists.

El código proporcionado pasa cada línea de entrada a gradebook() como un comando y muestra cada respuesta devuelta en su propia línea. Un nombre es una palabra en minúsculas, y la entrada contiene solo los comandos descritos hasta ahora.

Pruébalo tú mismo

gradebook <- function(commands) {
  grades <- list()
  replies <- c()
  for (cmd in commands) {
    parts <- strsplit(cmd, " ")[[1]]
    name <- parts[2]
    # Escribe tu código aquí
  }
  replies
}

# Código de entrada/salida proporcionado: déjalo tal como está
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de R online