8.8. Iteration with Strings¶
One of the most common uses of a for
loop is to carry out a task on each
item in a collection. When using a loop with a collection in this way, we say
that the loop iterates over the collection.
8.8.1. Iterate by Index or Characters¶
In the Loops chapter, we learned about iteration. The following examples illustrate two ways we can iterate over a string.
Example
One way to iterate over a string is to use the index values for each
character. The following program prints each of the characters of the string
'LaunchCode'
on a separate line.
Run the code to see the output, then complete the Try It suggestions.
1 2 3 4 | name = 'LaunchCode'
for index in range(len(name)):
print(name[index])
|
Since len(name)
is 10, the loop executes once for each of the values 0 to
9, assigning them in turn to the loop variable index
.
The loop body, print(name[index])
, prints one of the characters from
name
(name[0]
through name[9]
for 'LaunchCode'
).
Try It!
Replace the string
'LaunchCode'
with your name. Note how usinglen(name)
as the argument insiderange
makes the loop run the proper number of times, regardless of the string.Use
range(start, stop, step)
to print every third character fromname
.Loop through the string using negative index values. Run the program with
range(-1, -len(range), -1)
. How does the output change?range(-1, -len(range), -1)
does not quite get all of the letters fromname
. Modify thestart, stop, step
values as needed to print all of the characters.
Since a string is simply a sequence of characters, Python gives us a way to automatically iterate over those characters.
Example
Run the following code to see the output, then complete the Try It suggestions.
1 2 3 4 5 6 | fruit = 'Bananas'
fruit_copy = ''
for char in fruit:
fruit_copy += char
print(char, fruit_copy)
|
The loop variable char
is automatically reassigned each character in the
string stored by fruit
. This approach is called iteration by item.
We also see an example of the accumulator pattern. The program reassigns a
new, longer string to fruit_copy
each iteration.
Note that iteration by item moves through a collection from left to right. If we want to move from right to left, we must use the index values.
Try It!
Replace
fruit_copy += char
withfruit_copy = char.upper() + fruit_copy
. What happens to the output?Replace
print(char, fruit_copy)
withprint(char, fruit.count(char))
. Run the program to see the output.Use a template literal and
format()
to print a more readable message each iteration. Something like,'Bananas' contains 3 'a' character(s).
The output should change each time the loop repeats.
8.8.2. Check Your Understanding¶
Question
Given the following code, which character is printed during the fifth iteration?
1 2 3 4 | text = 'Hello, World!'
for index in range(len(text)):
print(text[index])
|
'l'
'o'
','
' '
Question
Given the following code, which character is printed during the fifth iteration?
1 2 3 4 | text = 'Hello, World!'
for char in text:
print(char)
|
'l'
'o'
','
' '
Question
Given the string my_dream_car = 'Tesla'
, which of the following will
loop backwards through all of the characters in the string? Select ALL
options that work.
for index in range(len(my_dream_car)):
for index in range(-1, -len(my_dream_car), -1):
for index in range(len(my_dream_car)-1, -1, -1):
for index in range(-1, -len(my_dream_car)-1, -1):
for char in my_dream_car:
for char in -my_dream_car: