📖 Scenario: You are building a simple search feature for a book app. Users type a few letters, and you want to count how many book titles start with those letters.
🎯 Goal: Create a program that counts how many words in a list start with a given prefix.
📋 What You'll Learn
Create a list of words with exact given titles
Create a variable for the prefix to search
Use a for loop to count words starting with the prefix
Print the final count
💡 Why This Matters
🌍 Real World
Counting words with a prefix is useful in search features, autocomplete, and filtering lists in apps.
💼 Career
This skill helps in building efficient search and filter functions in software development.
Progress0 / 4 steps
1
Create the list of book titles
Create a list called book_titles with these exact strings: 'apple', 'application', 'banana', 'appetite', 'apricot'
DSA Python
Hint
Use square brackets [] to create a list and separate words with commas.
2
Set the prefix to search
Create a variable called prefix and set it to the string 'app'
DSA Python
Hint
Use = to assign the string 'app' to the variable prefix.
3
Count words starting with the prefix
Create a variable called count and set it to 0. Then use a for loop with variable word to iterate over book_titles. Inside the loop, use an if statement to check if word.startswith(prefix). If yes, increase count by 1.
DSA Python
Hint
Remember to use startswith() method to check the prefix.
4
Print the count result
Write a print statement to display the value of count
DSA Python
Hint
The output should be the number of words starting with 'app'.
Practice
(1/5)
1. What does the function countWordsStartingWith(words, prefix) do when given a list of words and a prefix?
easy
A. Counts how many words contain the prefix anywhere inside
B. Returns the first word that starts with the prefix
C. Counts how many words in the list start with the given prefix
D. Removes all words that start with the prefix from the list
Solution
Step 1: Understand the function purpose
The function is designed to count words that begin with a specific prefix, not just contain it anywhere.
Step 2: Compare options with function behavior
Only Counts how many words in the list start with the given prefix correctly describes counting words starting with the prefix. Others describe different behaviors.
Final Answer:
Counts how many words in the list start with the given prefix -> Option C
Quick Check:
Counting words starting with prefix = Counts how many words in the list start with the given prefix [OK]
Hint: Focus on 'start with' meaning prefix at word beginning [OK]
Common Mistakes:
Confusing 'start with' and 'contain' prefix
Thinking function returns words instead of count
Assuming it removes words instead of counting
2. Which of the following Python code snippets correctly counts words starting with a prefix p in a list words?
easy
A. sum(word.startswith(p) for word in words)
B. sum(word.startswith(p) == 'True' for word in words)
C. sum(word.startswith(p) is 'True' for word in words)
D. sum(word.startswith(p) = True for word in words)
Solution
Step 1: Check syntax correctness
sum(word.startswith(p) = True for word in words) uses '=' inside sum which is invalid syntax for comparison.
Step 2: Understand boolean summation
Options B and C incorrectly compare boolean to string 'True' (always False). Only sum(word.startswith(p) for word in words) correctly sums booleans directly (True counts as 1).
Final Answer:
sum(word.startswith(p) for word in words) -> Option A
Quick Check:
Use sum with boolean directly for counting [OK]
Hint: Use sum with boolean expressions directly, no need for == or is [OK]
Common Mistakes:
Using '=' instead of '==' for comparison
Comparing boolean to string 'True'
Confusing syntax causing errors
3. What is the output of the following code?
words = ['apple', 'app', 'application', 'banana', 'apply']
prefix = 'app'
count = sum(word.startswith(prefix) for word in words)
print(count)
medium
A. 2
B. 3
C. 5
D. 4
Solution
Step 1: Identify words starting with 'app'
Words starting with 'app' are 'apple', 'app', 'application', and 'apply' -- total 4 words.
Step 2: Calculate sum of True values
Each word starting with prefix counts as 1, so sum is 4.
Final Answer:
4 -> Option D
Quick Check:
Count words starting with 'app' = 4 [OK]
Hint: Count words starting exactly with prefix, not just containing it [OK]
Common Mistakes:
Counting words that contain prefix anywhere
Missing one word that starts with prefix
Confusing prefix length with word length
4. Find the error in this code that tries to count words starting with prefix 'pre':
def count_prefix(words, prefix):
count = 0
for word in words:
if word.startswith == prefix:
count += 1
return count
words = ['prefix', 'preach', 'prevent', 'post']
prefix = 'pre'
print(count_prefix(words, prefix))
medium
A. Using 'word.startswith == prefix' instead of 'word.startswith(prefix)'
B. Missing return statement in function
C. Incorrect variable name 'count' used
D. Loop should be 'for prefix in words' instead of 'for word in words'
Solution
Step 1: Identify incorrect method usage
The code uses 'word.startswith == prefix' which compares method to string, incorrect syntax.
Step 2: Correct method call
It should be 'word.startswith(prefix)' to check if word starts with prefix.
Final Answer:
Using 'word.startswith == prefix' instead of 'word.startswith(prefix)' -> Option A
Quick Check:
Method call needs parentheses with argument [OK]
Hint: Remember to call methods with parentheses and arguments [OK]
Common Mistakes:
Comparing method itself instead of calling it
Forgetting parentheses after method name
Mixing variable names in loop
5. Given a list of words, how would you count words starting with any prefix from a list of prefixes prefixes? Choose the correct code snippet.
A. sum(word.startswith(prefixes[0]) or word.startswith(prefixes[1]) for word in words)
B. sum(any(word.startswith(p) for p in prefixes) for word in words)
C. sum(word.startswith(prefixes) for word in words)
D. sum(word.startswith(p) and p in prefixes for word in words)
Solution
Step 1: Understand requirement for multiple prefixes
We need to check if each word starts with any prefix in the prefixes list.
Step 2: Analyze options for correct logic
sum(any(word.startswith(p) for p in prefixes) for word in words) uses any() to correctly check if word starts with any prefix. sum(word.startswith(prefixes[0]) or word.startswith(prefixes[1]) for word in words) only checks first two prefixes (misses 'cow' with 'co'). sum(word.startswith(prefixes) for word in words) passes list to startswith (TypeError). sum(word.startswith(p) and p in prefixes for word in words) uses unbound p and incorrect and logic.
Final Answer:
sum(any(word.startswith(p) for p in prefixes) for word in words) -> Option B
Quick Check:
Use any() to check multiple prefixes per word [OK]
Hint: Use any() inside sum() to check multiple prefixes per word [OK]
Common Mistakes:
Passing list directly to startswith instead of iterating
Using 'and' instead of 'or' logic
Hardcoding prefix checks instead of looping
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.