Bird
Raised Fist0
Rubyprogramming~30 mins

Case/when statement in Ruby - Mini Project: Build & Apply

Choose your learning style10 modes available
Using case/when statement in Ruby
📖 Scenario: You are building a simple program that gives a message based on the day of the week. This is like a small helper that tells you what kind of day it is.
🎯 Goal: Create a Ruby program that uses a case/when statement to print a message depending on the day stored in a variable.
📋 What You'll Learn
Create a variable called day with the exact value "Tuesday".
Create a variable called weekend_days that holds an array with "Saturday" and "Sunday".
Use a case statement on the variable day with when clauses for weekdays and weekend days.
Print the exact message "It's a weekday." if the day is Monday to Friday.
Print the exact message "It's the weekend!" if the day is Saturday or Sunday.
Print the exact message "Unknown day." if the day is not recognized.
💡 Why This Matters
🌍 Real World
Using <code>case/when</code> statements helps programs make decisions based on different conditions, like choosing what to do depending on user input or data values.
💼 Career
Understanding <code>case/when</code> statements is important for writing clear and efficient code in Ruby, which is used in web development, automation, and many software projects.
Progress0 / 4 steps
1
Create the day variable
Create a variable called day and set it to the string "Tuesday".
Ruby
Hint

Use = to assign the string "Tuesday" to the variable day.

2
Create the weekend_days array
Create a variable called weekend_days and set it to an array containing the strings "Saturday" and "Sunday".
Ruby
Hint

Use square brackets [] to create an array with the two weekend day strings.

3
Write the case statement for day
Write a case statement using the variable day. Use when clauses for weekdays ("Monday" to "Friday") to print "It's a weekday.". Use a when clause for weekend_days to print "It's the weekend!". Use else to print "Unknown day.".
Ruby
Hint

Use when with multiple values separated by commas for weekdays. Use when *weekend_days to match weekend days. Use else for any other day.

4
Print the result
Run the program to print the message for the day stored in day. The output should be exactly It's a weekday..
Ruby
Hint

Make sure you run the program and check the output matches exactly.

Practice

(1/5)
1.

What does the case/when statement do in Ruby?

easy
A. It chooses which code to run based on matching a value.
B. It repeats code multiple times.
C. It defines a new method.
D. It creates a new variable.

Solution

  1. Step 1: Understand the purpose of case/when

    The case/when statement compares a value to different options to decide which code to run.
  2. Step 2: Compare with other options

    Repeating code is done by loops, defining methods uses def, and variables are created by assignment, so these are incorrect.
  3. Final Answer:

    It chooses which code to run based on matching a value. -> Option A
  4. Quick Check:

    case/when selects code by value match [OK]
Hint: Remember: case/when picks code by matching values [OK]
Common Mistakes:
  • Confusing case/when with loops
  • Thinking case/when defines methods
  • Believing case/when creates variables
2.

Which of the following is the correct syntax for a case/when statement in Ruby?

case x
  when 1
    puts "One"
  when 2
    puts "Two"
  else
    puts "Other"
end
easy
A. case x when 1 puts "One" when 2 puts "Two" else puts "Other" end
B. case x { when 1: puts "One" when 2: puts "Two" else: puts "Other" }
C. switch(x) { case 1: puts "One" case 2: puts "Two" default: puts "Other" }
D. if x == 1 then puts "One" elsif x == 2 then puts "Two" else puts "Other" end

Solution

  1. Step 1: Check Ruby case/when syntax

    Ruby uses case followed by when clauses and ends with end. No braces or colons are used.
  2. Step 2: Compare options

    case x when 1 puts "One" when 2 puts "Two" else puts "Other" end matches Ruby syntax exactly. Options B and C use braces and colons like other languages. if x == 1 then puts "One" elsif x == 2 then puts "Two" else puts "Other" end is an if/elsif, not case/when.
  3. Final Answer:

    case x when 1 puts "One" when 2 puts "Two" else puts "Other" end -> Option A
  4. Quick Check:

    Ruby case/when uses no braces or colons [OK]
Hint: Ruby case/when uses no braces or colons, just end [OK]
Common Mistakes:
  • Using braces or colons like other languages
  • Confusing case/when with switch/case from other languages
  • Using if/elsif instead of case/when
3.

What is the output of this Ruby code?

grade = 'B'
case grade
when 'A'
  puts "Excellent"
when 'B', 'C'
  puts "Good"
when 'D'
  puts "Pass"
else
  puts "Fail"
end
medium
A. Fail
B. Excellent
C. Pass
D. Good

Solution

  1. Step 1: Identify the value of grade

    The variable grade is set to 'B'.
  2. Step 2: Match grade in case/when

    The when 'B', 'C' line matches 'B', so it runs puts "Good".
  3. Final Answer:

    Good -> Option D
  4. Quick Check:

    grade 'B' matches when 'B', 'C' [OK]
Hint: Check all values in when line, including multiple matches [OK]
Common Mistakes:
  • Only checking first value in when list
  • Confusing else output
  • Ignoring multiple values in one when
4.

Find the error in this Ruby code snippet:

score = 85
case score
when 90..100
  puts "A"
when 80..89
  puts "B"
when 70..79
  puts "C"
else
  puts "F"
end

Why does it not print "B" for score 85?

medium
A. Ranges in when must be strings, not numbers.
B. The case statement compares score with ranges incorrectly; use case with when and ===.
C. The code is correct; it will print "B" as expected.
D. The ranges overlap and cause confusion.

Solution

  1. Step 1: Understand how case/when works with ranges

    Ruby's case/when uses the === operator, which works with ranges to check if a value is inside.
  2. Step 2: Check the given score and ranges

    Score 85 falls inside 80..89, so puts "B" will run correctly.
  3. Final Answer:

    The code is correct; it will print "B" as expected. -> Option C
  4. Quick Check:

    Ranges work with case/when using === [OK]
Hint: Ranges work naturally in when clauses with case [OK]
Common Mistakes:
  • Thinking ranges must be strings
  • Believing case/when can't handle ranges
  • Assuming overlapping ranges cause errors here
5.

You want to write a Ruby case/when statement that prints "Weekend" for Saturday and Sunday, "Weekday" for Monday to Friday, and "Invalid" for any other input. Which code correctly does this?

hard
A. case day when 'Saturday', 'Sunday' puts "Weekend" when 'Monday'..'Friday' puts "Weekday" else puts "Invalid" end
B. case day when 'Saturday', 'Sunday' puts "Weekend" when 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' puts "Weekday" else puts "Invalid" end
C. case day when 'Saturday'..'Sunday' puts "Weekend" when 'Monday'..'Friday' puts "Weekday" else puts "Invalid" end
D. case day when ['Saturday', 'Sunday'] puts "Weekend" when ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] puts "Weekday" else puts "Invalid" end

Solution

  1. Step 1: Understand how to list multiple values in when

    Use commas to separate multiple values in one when line, like when 'Saturday', 'Sunday'.
  2. Step 2: Check each option

    case day when 'Saturday', 'Sunday' puts "Weekend" when 'Monday'..'Friday' puts "Weekday" else puts "Invalid" end incorrectly uses a range of strings 'Monday'..'Friday' which does not work as expected for days. case day when ['Saturday', 'Sunday'] puts "Weekend" when ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] puts "Weekday" else puts "Invalid" end uses arrays in when, which does not match values correctly. case day when 'Saturday'..'Sunday' puts "Weekend" when 'Monday'..'Friday' puts "Weekday" else puts "Invalid" end uses string ranges like 'Saturday'..'Sunday' which is not meaningful for days. case day when 'Saturday', 'Sunday' puts "Weekend" when 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' puts "Weekday" else puts "Invalid" end correctly lists each weekday separately with commas.
  3. Final Answer:

    case day when 'Saturday', 'Sunday' puts "Weekend" when 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' puts "Weekday" else puts "Invalid" end -> Option B
  4. Quick Check:

    Use commas for multiple values in when [OK]
Hint: Use commas, not ranges or arrays, for multiple when values [OK]
Common Mistakes:
  • Using ranges of strings for days
  • Using arrays inside when clauses
  • Trying to use string ranges that don't work
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard