📖 Scenario: You are organizing a small library and want to select books by their ID numbers. You will use Ruby's range operators to pick books within certain ID ranges.
🎯 Goal: Learn how to create ranges using the .. and ... operators and understand the difference between inclusive and exclusive ranges.
📋 What You'll Learn
Create a range of book IDs using the inclusive range operator ..
Create a range of book IDs using the exclusive range operator ...
Use a for loop to iterate over the inclusive range
Print the ranges to see the difference in output
💡 Why This Matters
🌍 Real World
Ranges are useful when you want to select a sequence of items, like book IDs, page numbers, or dates, without listing each item individually.
💼 Career
Understanding ranges helps in data filtering, pagination, and working with sequences in many programming jobs.
Progress0 / 4 steps
1
Create an inclusive range of book IDs
Create a variable called inclusive_range that holds a range of book IDs from 1 to 5 using the inclusive range operator ...
Ruby
Hint
Use .. to include the last number in the range.
2
Create an exclusive range of book IDs
Create a variable called exclusive_range that holds a range of book IDs from 1 to 5 using the exclusive range operator ....
Ruby
Hint
Use ... to exclude the last number in the range.
3
Iterate over the inclusive range
Use a for loop with the variable book_id to iterate over inclusive_range and print each book_id.
Ruby
Hint
Use for book_id in inclusive_range and puts book_id inside the loop.
4
Print both ranges to compare
Print inclusive_range.to_a and exclusive_range.to_a to see the difference between the two ranges.
Ruby
Hint
Use puts inclusive_range.to_a and puts exclusive_range.to_a to print the ranges as arrays.
Practice
(1/5)
1. What is the main difference between the Ruby range operators .. and ...?
easy
A. .. includes the end value, ... excludes the end value
B. .. excludes the end value, ... includes the end value
C. .. creates an array, ... creates a hash
D. .. is used for strings only, ... is used for numbers only
Solution
Step 1: Understand the .. operator
The .. operator creates a range that includes the last value in the sequence.
Step 2: Understand the ... operator
The ... operator creates a range that excludes the last value, stopping just before it.
Final Answer:
.. includes the end value, ... excludes the end value -> Option A
Quick Check:
Range inclusion = .., exclusion = ... [OK]
Hint: Remember: two dots include, three dots exclude end [OK]
Common Mistakes:
Confusing which operator includes or excludes the end
Thinking both operators behave the same
Assuming ranges create arrays automatically
Mixing up usage with different data types
2. Which of the following is the correct syntax to create a range from 1 to 5, excluding 5, in Ruby?
easy
A. range = 1..5
B. range = 1...5
C. range = (1..5).exclude_end?
D. range = 1-5
Solution
Step 1: Identify the operator for excluding the end
The ... operator excludes the end value, so 1...5 means 1, 2, 3, 4.
Step 2: Check other options
1..5 includes 5, (1..5).exclude_end? is a method call, not range creation, and 1-5 is subtraction.
Final Answer:
range = 1...5 -> Option B
Quick Check:
Exclude end uses three dots ... [OK]
Hint: Use three dots to exclude the last number [OK]
Common Mistakes:
Using two dots when exclusion is needed
Confusing method calls with range syntax
Using subtraction instead of range
Forgetting parentheses for method calls
3. What will be the output of the following Ruby code?
The range 1..3 includes 3, so (1..3).to_a is [1, 2, 3].
Step 2: Convert (1...3) to array
The range 1...3 excludes 3, so (1...3).to_a is [1, 2].
Final Answer:
[1, 2, 3]
[1, 2] -> Option D
Quick Check:
Two dots include end, three dots exclude end [OK]
Hint: Remember to_a shows all included values in the range [OK]
Common Mistakes:
Assuming both ranges include the end
Mixing up which operator excludes the end
Forgetting to convert range to array for output
Misreading the output format
4. The following Ruby code is intended to print numbers from 1 to 5, excluding 5. What is the error?
for i in 1..5 puts i end
medium
A. The for loop syntax is incorrect
B. The loop variable i is not defined
C. The range should use ... to exclude 5
D. The puts statement should be outside the loop
Solution
Step 1: Analyze the range used in the loop
The range 1..5 includes 5, so the loop prints 1 through 5.
Step 2: Identify how to exclude 5
To exclude 5, use the ... operator: 1...5 which stops before 5.
Final Answer:
The range should use ... to exclude 5 -> Option C
Quick Check:
Exclude end with three dots ... [OK]
Hint: Use three dots to exclude the last number in loops [OK]
Common Mistakes:
Using two dots when exclusion is needed
Thinking loop variable needs declaration
Misunderstanding for loop syntax in Ruby
Placing puts outside the loop incorrectly
5. You want to create a Ruby method that returns all numbers from 1 up to but not including a given number n. Which range operator should you use inside the method to achieve this?
hard
A. Use 1...n to exclude n
B. Use 1...n-1 to exclude n and n-1
C. Use 1...(n+1) to exclude n
D. Use 1..n to include n
Solution
Step 1: Understand the requirement
The method should return numbers from 1 up to but not including n.
Step 2: Choose the correct range operator
Using 1...n creates a range that excludes n, exactly what is needed.
Step 3: Evaluate other options
1..n includes n, 1...(n+1) includes n, 1...n-1 excludes n-1 too, which is incorrect.
Final Answer:
Use 1...n to exclude n -> Option A
Quick Check:
Three dots exclude the end value [OK]
Hint: Use three dots to exclude the upper limit without math [OK]
Common Mistakes:
Using two dots and including the end value
Subtracting 1 manually instead of using three dots
Misplacing parentheses causing wrong range
Using three dots with arithmetic causing off-by-one
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.