Menu
Coddy logo textTech

Agregar estudiante

Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 49 de 56.

Define un método add_student que registre a un nuevo estudiante en el hash compartido student_records.

Rechazar duplicados es la única rama; una vez que un estudiante existe, infórmalo y regresa sin sobrescribir.

challenge icon

Desafío

Fácil

En la parte superior de tu archivo, mantén student_records = {}. Luego define un método add_student(name, age, courses) que:

  1. Si name ya es una clave en student_records, imprime Student '<name>' already exists. y retorna.
  2. De lo contrario, almacena { age: age, grades: [], courses: courses } bajo name e imprime Student '<name>' added.

En la parte inferior de tu archivo, reemplaza el bloque de prueba con:

add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspect

La salida esperada es:

Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}

Debido a que los métodos no pueden ver variables locales del script que los contiene, declara student_records con $student_records (una global) para que el método pueda leerla y actualizarla. Usa ese nombre también dentro del método.

Hoja de referencia

Usa una variable global ($variable_name) para que los métodos puedan acceder y modificar variables definidas fuera de su alcance:

$student_records = {}

def add_student(name, age, courses)
  if $student_records.key?(name)
    puts "Student '#{name}' already exists."
    return
  end
  $student_records[name] = { age: age, grades: [], courses: courses }
  puts "Student '#{name}' added."
end

Puntos clave:

  • Usa el prefijo $ para hacer que una variable sea global (accesible dentro de los métodos)
  • Usa .key?(name) para verificar si un hash ya contiene una clave
  • Usa return para salir de un método anticipadamente después de manejar un duplicado

Pruébalo tú mismo

$student_records = {}

# POR HACER: def add_student(name, age, courses), proteger contra duplicados,
# almacenar { age:, grades: [], courses: }, imprimir agregado/ya existe

add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
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