Bird
Raised Fist0
Rubyprogramming~10 mins

Case with ranges and patterns in Ruby - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to match the variable 'score' with the correct range in the case statement.

Ruby
score = 75
case score
when [1]
  puts "Passed"
else
  puts "Failed"
end
Drag options to blanks, or click blank then click option'
A0..49
B51..74
C100..150
D50..100
Attempts:
3 left
💡 Hint
Common Mistakes
Using a range that does not include 75, like 0..49.
2fill in blank
medium

Complete the code to print the correct message for the variable 'age' using a case statement with ranges.

Ruby
age = 20
case age
when [1]
  puts "Teenager"
when 20..29
  puts "Twenties"
else
  puts "Other age"
end
Drag options to blanks, or click blank then click option'
A0..12
B13..19
C10..15
D30..39
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing a range that does not cover all teenage years.
3fill in blank
hard

Fix the error in the case statement to correctly match the variable 'grade' with letter grades.

Ruby
grade = 'B'
case grade
when [1]
  puts "Excellent"
when 'B'
  puts "Good"
else
  puts "Needs Improvement"
end
Drag options to blanks, or click blank then click option'
A'A'
BA
C"A"
D:A
Attempts:
3 left
💡 Hint
Common Mistakes
Using unquoted letters which cause errors.
4fill in blank
hard

Fill both blanks to create a case statement that matches 'temperature' with descriptive ranges.

Ruby
temperature = 15
case temperature
when [1]
  puts "Cold"
when [2]
  puts "Warm"
else
  puts "Hot"
end
Drag options to blanks, or click blank then click option'
A0..10
B11..20
C21..30
D31..40
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping the ranges or using overlapping ranges.
5fill in blank
hard

Fill both blanks to create a case statement that matches 'day' with weekdays and weekends.

Ruby
day = 'Saturday'
case day
when [1]
  puts "Weekday"
when [2]
  puts "Weekend"
else
  puts "Invalid day"
end
Drag options to blanks, or click blank then click option'
A/Monday|Tuesday|Wednesday|Thursday|Friday/
B/Saturday|Sunday/
C"Saturday"
D"Monday"
Attempts:
3 left
💡 Hint
Common Mistakes
Using single strings instead of regex patterns for multiple days.

Practice

(1/5)
1.

What does the in keyword do inside a case statement in Ruby when used with ranges?

easy
A. It checks if the value falls within the given range.
B. It assigns the range to the value.
C. It creates a new range object.
D. It compares the value for equality with the range.

Solution

  1. Step 1: Understand the role of in in case

    The in keyword is used to match a value against a pattern or range inside a case statement.
  2. Step 2: Check how it works with ranges

    When used with a range like 1..10, it checks if the value lies within that range.
  3. Final Answer:

    It checks if the value falls within the given range. -> Option A
  4. Quick Check:

    in with range means value in range [OK]
Hint: Remember: in checks membership in range or pattern [OK]
Common Mistakes:
  • Thinking in assigns values instead of matching
  • Confusing range equality with membership
  • Assuming in creates new objects
2.

Which of the following is the correct syntax to match a number n in the range 5 to 15 inside a case statement using pattern matching?

case n
  in ???
    puts "In range"
  else
    puts "Out of range"
end
easy
A. in (5..15)
B. 5..15
C. 5...15
D. in 5..15

Solution

  1. Step 1: Identify correct pattern syntax in in clause

    Inside case, in is followed directly by the pattern, so in 5..15 is correct syntax.
  2. Step 2: Check other options for syntax errors

    Options without in or with extra parentheses are invalid syntax in this context.
  3. Final Answer:

    in 5..15 -> Option D
  4. Quick Check:

    Use in followed by the pattern without extra keywords or parentheses [OK]
Hint: Use in once, then the pattern without extra keywords [OK]
Common Mistakes:
  • Writing in in 5..15 which is invalid
  • Adding parentheses around the range
  • Using three-dot range 5...15 which excludes 15
3.

What will be the output of this Ruby code?

score = 75
case score
in 0..49 then puts "Fail"
in 50..79 then puts "Pass"
in 80..100 then puts "Excellent"
else puts "Invalid"
end
medium
A. Pass
B. Fail
C. Excellent
D. Invalid

Solution

  1. Step 1: Check which range includes 75

    75 is not in 0..49 but is in 50..79.
  2. Step 2: Match the corresponding output

    The code prints "Pass" when score is in 50..79.
  3. Final Answer:

    Pass -> Option A
  4. Quick Check:

    75 in 50..79 means output "Pass" [OK]
Hint: Find which range includes the value, then pick that output [OK]
Common Mistakes:
  • Choosing "Fail" because 75 is greater than 49
  • Confusing inclusive and exclusive ranges
  • Ignoring the order of case branches
4.

Identify the error in this Ruby code snippet using case with pattern matching:

value = 10
case value
in 1..5
  puts "Low"
in 6..10
  puts "Medium"
else
  puts "High"
end
medium
A. Missing then after in clauses
B. No error; code runs and prints "Medium"
C. Ranges should be written as arrays inside in
D. The case statement should use when instead of in

Solution

  1. Step 1: Check syntax of case with in and ranges

    Using in with ranges inside case is valid Ruby syntax.
  2. Step 2: Verify output for value 10

    10 matches the range 6..10, so it prints "Medium".
  3. Final Answer:

    No error; code runs and prints "Medium" -> Option B
  4. Quick Check:

    in with ranges works fine [OK]
Hint: Remember in works like when for pattern matching [OK]
Common Mistakes:
  • Thinking then is mandatory after in
  • Confusing in with when
  • Trying to write ranges as arrays
5.

Given this Ruby code, what will be the output?

data = [3, 7, 12, 18]
case data
in [Integer, Integer, Integer, Integer]
  puts "All integers"
in [Integer, Integer, Integer, 18]
  puts "Last is 18"
else
  puts "No match"
end
hard
A. No match
B. Last is 18
C. All integers
D. SyntaxError

Solution

  1. Step 1: Understand array pattern matching order

    The case checks patterns in order. The first pattern matches any array of four integers.
  2. Step 2: Check if data matches first pattern

    Data is [3,7,12,18], all integers, so it matches the first pattern.
  3. Step 3: Confirm second pattern is not reached

    Since first pattern matches, second is skipped.
  4. Final Answer:

    All integers -> Option C
  5. Quick Check:

    First matching pattern runs, so output is "All integers" [OK]
Hint: Patterns checked top-down; first match wins [OK]
Common Mistakes:
  • Assuming second pattern runs despite first matching
  • Confusing element types with values in patterns
  • Expecting syntax error due to pattern complexity
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