Section 7.14 Traversal and the for
Loop: By Index
It is also possible to use the range
function to systematically generate the indices of the characters. The for
loop can then be used to iterate over these positions. These positions can be used together with the indexing operator to access the individual characters in the string.
Consider the following codelens example.
The index positions in “apple” are 0,1,2,3 and 4. This is exactly the same sequence of integers returned by range(5)
. The first time through the for loop, idx
will be 0 and the “a” will be printed. Then, idx
will be reassigned to 1 and “p” will be displayed. This will repeat for all the range values up to but not including 5. Since “e” has index 4, this will be exactly right to show all of the characters.
In order to make the iteration more general, we can use the len
function to provide the bound for range
. This is a very common pattern for traversing any sequence by position. Make sure you understand why the range function behaves correctly when using len
of the string as its parameter value.
You may also note that iteration by position allows the programmer to control the direction of the traversal by changing the sequence of index values. Recall that we can create ranges that count down as well as up so the following code will print the characters from right to left.
Trace the values of idx
and satisfy yourself that they are correct. In particular, note the start and end of the range. Do you understand why the start of the range is len(fruit) - 1
and not len(fruit)
? Do you understand why the end of the range is -1 and not 0?
Checkpoint 7.14.1.
How many times is the letter “o” printed by the following statements?
s = "python rocks"
for idx in range(len(s)):
if idx % 2 == 0:
print(s[idx])
0
- The
for
loop visits each index but the selection only prints some of them.
1
- “o” is at positions 4 and 8
2
- Yes, it will print all the characters in even index positions and the “o” character appears both times in an even location.
Error, the for
statement cannot have an if
inside.
- The
for
statement can have any statements inside, including if
, and even another for
.