Menu
Coddy logo textTech

Rangos en Case / When

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

Los rangos destacan dentro de la sentencia case de Ruby. Mientras que muchos lenguajes necesitan una cadena de if/elsif con operadores de comparación, Ruby te permite comparar un valor contra rangos directamente.

score = 78
grade = case score
        when 90..100 then "A"
        when 80..89  then "B"
        when 70..79  then "C"
        when 60..69  then "D"
        else              "F"
        end
puts grade  # C

Internamente, when 70..79 utiliza el operador === del rango, que es equivalente a (70..79).include?(score).

La forma case es más corta, más fácil de leer y más rápida de escribir que una larga secuencia if/elsif.

challenge icon

Desafío

Fácil

Lee una lista de edades enteras separadas por comas. Para cada edad, clasifícala con una sentencia case usando rangos:

  • 0..12: Child
  • 13..19: Teen
  • 20..64: Adult
  • 65 o superior: Senior
  • Cualquier otra cosa (negativo): omitido, no entra en el informe

Imprime una línea de recuento para cada categoría que no sea cero, en este orden fijo: Child, Teen, Adult, Senior. Omite las categorías con cero personas. Después de los recuentos, imprime Skipped: <n> donde n es el número de edades negativas (inválidas).

Para la entrada 5,15,30,70,-3,40,12, la salida es:

Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1

Hoja de referencia

Usa rangos en sentencias case — Ruby compara mediante === (equivalente a include?):

score = 78
grade = case score
        when 90..100 then "A"
        when 80..89  then "B"
        when 70..79  then "C"
        when 60..69  then "D"
        else              "F"
        end
puts grade  # C

Pruébalo tú mismo

ages = gets.chomp.split(",").map(&:to_i)

# TODO: clasificar cada edad con case + rangos, contar por categoría, imprimir informe
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