📖 Scenario: You work at a small bookstore. You have a list of book titles and their prices. You want to find out which books cost more than $20.
🎯 Goal: Build a Swift program that uses a for-in loop to check each book's price and collect the titles of books costing more than $20.
📋 What You'll Learn
Create a dictionary called books with these exact entries: "Swift Programming": 25, "iOS Development": 18, "Data Structures": 30, "Algorithms": 15
Create a variable called priceThreshold and set it to 20
Use a for-in loop with variables title and price to iterate over books
Inside the loop, check if price is greater than priceThreshold and if so, add title to a list called expensiveBooks
Print the expensiveBooks list at the end
💡 Why This Matters
🌍 Real World
This project shows how to filter items from a collection based on conditions, a common task in apps like shopping, inventory, or data analysis.
💼 Career
Understanding how to loop through collections and apply conditions is essential for software developers working with data structures and user data.
Progress0 / 4 steps
1
Create the books dictionary
Create a dictionary called books with these exact entries: "Swift Programming": 25, "iOS Development": 18, "Data Structures": 30, "Algorithms": 15
Swift
Hint
Use square brackets [] to create a dictionary with key-value pairs separated by colons.
2
Set the price threshold
Create a variable called priceThreshold and set it to 20
Swift
Hint
Use let to create a constant variable with the value 20.
3
Use a for-in loop to find expensive books
Create an empty array called expensiveBooks of type [String]. Then use a for-in loop with variables title and price to iterate over books. Inside the loop, check if price is greater than priceThreshold. If yes, append title to expensiveBooks.
Swift
Hint
Use for (title, price) in books to loop through the dictionary. Use append() to add items to the array.
4
Print the list of expensive books
Write a print statement to display the expensiveBooks array.
Swift
Hint
Use print(expensiveBooks) to show the list of books costing more than $20.
Practice
(1/5)
1. What does the following Swift code do?
let numbers = [1, 2, 3]
for number in numbers {
print(number)
}
easy
A. Prints each number in the array one by one
B. Prints the entire array once
C. Causes a syntax error
D. Prints the sum of the numbers
Solution
Step 1: Understand the for-in loop structure
The loop goes through each element in the array named 'numbers'.
Step 2: Observe the print statement inside the loop
Each element is printed on its own line as the loop runs.
Final Answer:
Prints each number in the array one by one -> Option A
Quick Check:
for number in numbers prints each number [OK]
Hint: For-in loops print items one at a time [OK]
Common Mistakes:
Thinking it prints the whole array at once
Confusing the loop variable with the collection
Expecting a sum instead of individual prints
2. Which of the following is the correct syntax for a for-in loop iterating over an array named fruits in Swift?
easy
A. for fruit in fruits { print(fruit) }
B. for (fruit : fruits) { print(fruit) }
C. for fruit to fruits { print(fruit) }
D. foreach fruit in fruits { print(fruit) }
Solution
Step 1: Recall Swift for-in loop syntax
The correct syntax uses 'for variable in collection { }'.
Step 2: Compare options to syntax
Only for fruit in fruits { print(fruit) } matches this syntax exactly.
Final Answer:
for fruit in fruits { print(fruit) } -> Option A
Quick Check:
Correct for-in syntax uses 'in' keyword [OK]
Hint: Remember: for item in collection { } is correct [OK]
Common Mistakes:
Using 'to' instead of 'in'
Using parentheses incorrectly
Using 'foreach' which is not Swift syntax
3. What will be the output of this Swift code?
let names = ["Anna", "Bob", "Cara"]
for name in names {
print(name.count)
}
medium
A. 3 3 4
B. 3 4 3
C. 4 3 3
D. 4 3 4
Solution
Step 1: Identify the array elements and their lengths
"Anna" has 4 letters, "Bob" has 3, "Cara" has 4.
Step 2: Understand the loop prints each name's character count
The loop prints 4, then 3, then 4 on separate lines.
Final Answer:
4 3 4 -> Option D
Quick Check:
name.count matches each string length [OK]
Hint: Count letters of each name inside the loop [OK]
Common Mistakes:
Mixing up the order of counts
Counting letters incorrectly
Assuming print outputs on same line
4. Find the error in this Swift code snippet:
let colors = ["red", "green", "blue"]
for color in colors
print(color)
}
medium
A. Array declaration syntax is wrong
B. Variable name 'color' is invalid
C. Missing opening brace '{' after for loop
D. print statement should be outside the loop
Solution
Step 1: Check for proper loop syntax
The for-in loop requires braces '{' and '}' to enclose the loop body.
Step 2: Identify missing opening brace
The code has a closing brace '}' but no opening brace '{' after the for line.
Final Answer:
Missing opening brace '{' after for loop -> Option C
Quick Check:
for loops need braces around their body [OK]
Hint: Always use { } to wrap for loop code block [OK]
Common Mistakes:
Forgetting opening brace
Misplacing braces
Assuming print can be outside without braces
5. You have a dictionary of student names and their scores:
let scores = ["Alice": 85, "Bob": 92, "Cara": 78]
Using a for-in loop, how do you print only the names of students who scored above 80?
hard
A. for name in scores.keys {
if scores[name] > 80 {
print(name)
}
}
B. for (name, score) in scores {
if score > 80 {
print(name)
}
}
C. for score in scores.values {
if score > 80 {
print(score)
}
}
D. for name in scores {
if scores[name] > 80 {
print(name)
}
}
Solution
Step 1: Understand dictionary iteration with key-value pairs
Using 'for (name, score) in scores' lets you access both keys and values directly.
Step 2: Apply condition to print names with score above 80
Inside the loop, check if score > 80, then print the name.
Final Answer:
for (name, score) in scores { if score > 80 { print(name) } } -> Option B
Quick Check:
Use (key, value) pairs to filter dictionary [OK]
Hint: Use (key, value) in dictionary to access both [OK]
Common Mistakes:
Trying to loop only keys or values without pairing
Forgetting to unwrap optional values
Printing scores instead of names
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.