Menu
Coddy logo textTech

Ranges in Case / When

Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 8 von 56.

Ranges glänzen in Rubys case-Anweisung. Wo viele Sprachen eine Kette von if/elsif mit Vergleichsoperatoren benötigen, lässt Ruby Sie einen Wert direkt gegen Ranges prüfen.

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

Hinter den Kulissen verwendet when 70..79 den ===-Operator des Bereichs, was äquivalent zu (70..79).include?(score) ist.

Die case-Form ist kürzer, einfacher zu lesen und schneller zu schreiben als eine lange if/elsif-Kaskade.

challenge icon

Aufgabe

Einfach

Lies eine kommagetrennte Liste von ganzzahligen Altern ein. Klassifiziere jedes Alter mit einer case-Anweisung unter Verwendung von Bereichen (ranges):

  • 0..12: Child
  • 13..19: Teen
  • 20..64: Adult
  • 65 oder höher: Senior
  • Alles andere (negativ): übersprungen, erscheint nicht im Bericht

Gib für jede Kategorie, die nicht Null ist, eine Zeile mit der Anzahl in dieser festen Reihenfolge aus: Child, Teen, Adult, Senior. Überspringe Kategorien mit null Personen. Gib nach den Zählungen Skipped: <n> aus, wobei n die Anzahl der negativen (ungültigen) Alter ist.

Für die Eingabe 5,15,30,70,-3,40,12 lautet die Ausgabe:

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

Spickzettel

Verwenden Sie Bereiche in case-Anweisungen — Ruby vergleicht mittels === (entspricht 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

Probier es selbst

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

# TODO: Jedes Alter mit case + ranges klassifizieren, pro Kategorie zählen, Bericht ausgeben
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmfluss