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 brillan 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 directamente con rangos.

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

Entre bastidores, when 70..79 utiliza el operador === del rango, que equivale a (70..79).include?(score).

La forma case es más corta, fácil de leer y rápida de escribir que una larga cadena de 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 más: Senior
  • Cualquier otra cosa (negativa): se omite, no se incluye en el informe

Imprime una línea de recuento para cada categoría distinta de 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 (no válidas).

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

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

Pruébalo tú mismo

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

# TODO: clasificar cada edad con case + ranges, contar por categoría, imprimir el reporte
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 Ruby online