For Loops¶
The for
loop can traverse any sequence of items, such as a list or a string.
The syntax format of for loop is as follows:
for val in sequence:
Body of for
Here, val
is a variable that gets the value of the item in the sequence in each iteration.
The loop continues until we reach the last item in the sequence. Use indentation to separate the body of the for
loop from the rest of the code.
Flowchart of for Loop

numbers = [1, 2, 3, 4]
sum = 0
for val in numbers:
sum = sum+val
print("The sum is", sum)
>>> %Run -c $EDITOR_CONTENT
The sum is 10
The break Statement¶
With the break statement we can stop the loop before it has looped through all the items:
numbers = [1, 2, 3, 4]
sum = 0
for val in numbers:
sum = sum+val
if sum == 6:
break
print("The sum is", sum)
>>> %Run -c $EDITOR_CONTENT
The sum is 6
The continue Statement¶
With the continue
statement we can stop the current iteration of the loop, and continue with the next:
numbers = [1, 2, 3, 4]
for val in numbers:
if val == 3:
continue
print(val)
>>> %Run -c $EDITOR_CONTENT
1
2
4
The range() function¶
We can use the range() function to generate a sequence of numbers. range(6) will produce numbers between 0 and 5 (6 numbers).
We can also define start, stop and step size as range(start, stop, step_size). If not provided, step_size defaults to 1.
In a sense of range, the object is “lazy” because when we create the object, it does not generate every number it “contains”. However, this is not an iterator because it supports in, len and __getitem__
operations.
This function will not store all values in memory; it will be inefficient. So it will remember the start, stop, step size and generate the next number during the journey.
To force this function to output all items, we can use the function list().
print(range(6))
print(list(range(6)))
print(list(range(2, 6)))
print(list(range(2, 10, 2)))
>>> %Run -c $EDITOR_CONTENT
range(0, 6)
[0, 1, 2, 3, 4, 5]
[2, 3, 4, 5]
[2, 4, 6, 8]
We can use range()
in a for
loop to iterate over a sequence of numbers. It can be combined with the len() function to use the index to traverse the sequence.
fruits = ['pear', 'apple', 'grape']
for i in range(len(fruits)):
print("I like", fruits[i])
>>> %Run -c $EDITOR_CONTENT
I like pear
I like apple
I like grape
Else in For Loop¶
The for
loop can also have an optional else
block. If the items in the sequence used for the loop are exhausted, the else
part is executed.
The break
keyword can be used to stop the for
loop. In this case, the else
part will be ignored.
Therefore, if no interruption occurs, the else
part of the for
loop will run.
for val in range(5):
print(val)
else:
print("Finished")
>>> %Run -c $EDITOR_CONTENT
0
1
2
3
4
Finished
The else block will NOT be executed if the loop is stopped by a break statement.
for val in range(5):
if val == 2: break
print(val)
else:
print("Finished")
>>> %Run -c $EDITOR_CONTENT
0
1