📖 Scenario: You are building a simple text search tool that helps users find specific words inside a paragraph. This is useful for searching keywords in documents, notes, or messages.
🎯 Goal: Build a program that searches for a given substring inside a text and shows all the starting positions where the substring appears.
📋 What You'll Learn
Create a string variable with a fixed paragraph of text.
Create a string variable for the substring to search.
Use a loop to find all starting indexes where the substring appears in the text.
Print the list of all starting positions.
💡 Why This Matters
🌍 Real World
Searching for keywords in documents, emails, or chat messages to quickly find important information.
💼 Career
Substring search is a basic skill used in text processing, search engines, and data analysis roles.
Progress0 / 4 steps
1
Create the text to search
Create a string variable called text with the exact value: 'the quick brown fox jumps over the lazy dog'
DSA Python
Hint
Use single quotes to create the string exactly as shown.
2
Set the substring to search
Create a string variable called pattern with the exact value: 'the'
DSA Python
Hint
Use single quotes to create the string exactly as shown.
3
Find all starting positions of the substring
Create an empty list called positions. Use a for loop with variable i to check every index in text where pattern could start. If the substring of text from i to i + len(pattern) equals pattern, append i to positions.
DSA Python
Hint
Use slicing to get the substring from i to i + len(pattern).
4
Print the list of starting positions
Use print(positions) to display the list of all starting positions where pattern appears in text.
DSA Python
Hint
The output should be a list of integers showing where 'the' starts in the text.
Practice
(1/5)
1. What does the in operator check when used like 'abc' in 'abcdef' in Python?
easy
A. If the substring 'abc' exists anywhere inside the string 'abcdef'
B. If the string 'abcdef' starts with 'abc'
C. If the string 'abcdef' ends with 'abc'
D. If the strings 'abc' and 'abcdef' are exactly equal
Solution
Step 1: Understand the in operator for strings
The in operator checks if the left string is found anywhere inside the right string.
Step 2: Apply to given strings
Since 'abc' is at the start of 'abcdef', it is found inside it.
Final Answer:
If the substring 'abc' exists anywhere inside the string 'abcdef' -> Option A
Quick Check:
'abc' in 'abcdef' = True [OK]
Hint: Remember: 'in' checks anywhere inside the string [OK]
Common Mistakes:
Thinking 'in' only checks start of string
Confusing 'in' with equality
Assuming 'in' checks only end of string
2. Which of the following is the correct syntax to find the index of substring 'cat' in string s = 'concatenate' using Python?
easy
A. s.indexOf('cat')
B. find(s, 'cat')
C. s.find('cat')
D. index(s, 'cat')
Solution
Step 1: Recall Python string method for substring index
Python strings have a method called find() to locate substring index.
Step 2: Check method usage
The correct syntax is s.find('cat'). Other options are invalid in Python.
Final Answer:
s.find('cat') -> Option C
Quick Check:
Use string.find(substring) syntax [OK]
Hint: Use string.find(substring) to get index [OK]
Common Mistakes:
Using non-Python syntax like indexOf
Calling find as a standalone function
Confusing method name or order of arguments
3. What will be the output of the following code?
text = 'abracadabra'
pos = text.find('ra')
print(pos)
medium
A. 2
B. 1
C. 3
D. -1
Solution
Step 1: Understand find() method behavior
The find() method returns the lowest index where the substring is found or -1 if not found.
Step 2: Locate substring 'ra' in 'abracadabra'
The substring 'ra' first appears starting at index 1 (abracadabra).
Final Answer:
1 -> Option B
Quick Check:
First 'ra' at index 1 [OK]
Hint: Remember: find() returns first occurrence index [OK]
Common Mistakes:
Assuming find() returns all occurrences
Confusing index with count
Mistaking find() return -1 for found substring
4. Identify the error in the following code snippet that tries to check if substring 'dog' is in string s:
s = 'hotdog'
if s.contains('dog'):
print('Found')
else:
print('Not Found')
medium
A. The method contains does not exist for strings in Python
B. The substring 'dog' is misspelled
C. The string s is not defined
D. The print statements are incorrect
Solution
Step 1: Check string method availability in Python
Python strings do not have a contains() method; membership is checked with in.
Step 2: Correct way to check substring presence
Use 'dog' in s instead of s.contains('dog').
Final Answer:
The method contains does not exist for strings in Python -> Option A
Quick Check:
Use in operator, not contains() [OK]
Hint: Use in for substring check, not contains() [OK]
Common Mistakes:
Using Java-like contains() method in Python
Misspelling substring or variable
Assuming print syntax is wrong
5. Given a string s = 'banana', which code snippet correctly finds all starting indices of substring 'ana' in s?
hard
A. indices = [s.find('ana')]
B. indices = [i for i in range(len(s)) if 'ana' in s[i]]
C. indices = [i for i in range(len(s)) if s.find('ana') == i]
D. indices = [i for i in range(len(s)) if s[i:i+3] == 'ana']
Solution
Step 1: Understand substring search for all occurrences
To find all starting indices, check each position if substring matches.
Step 2: Analyze each option
indices = [i for i in range(len(s)) if s[i:i+3] == 'ana'] uses slicing and compares substring at each index correctly. indices = [s.find('ana')] finds only first occurrence. indices = [i for i in range(len(s)) if s.find('ana') == i] incorrectly compares find() result to index. indices = [i for i in range(len(s)) if 'ana' in s[i]] incorrectly checks membership of substring in single character.
Final Answer:
indices = [i for i in range(len(s)) if s[i:i+3] == 'ana'] -> Option D
Quick Check:
Slice and compare at each index for all matches [OK]
Hint: Use slicing and loop to find all substring start indices [OK]
Common Mistakes:
Using find() only returns first match
Comparing find() result incorrectly
Checking substring in single character
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.