\(\renewcommand\AA{\unicode{x212B}}\)
Looping¶
Executing a given block of code a number of times is achieved using either the
for
orwhile
statements
For … else¶
The syntax to loop with a
for
statement is
for ''target'' in sequence:
''block-of-code-to-execute''
where target gets the value of the current number in sequence.
A sequence from the loop can be a predefined sequence that has been constructed previously within the code or the
range(start, end, step)
function can be used to generate a sequence of numbers from start to end-1 in steps of step. The default step value is 1. E.g.
for i in range(0,10):
print(i)
gives the output
0
1
2
3
4
5
6
7
8
9
for i in range(0,10,2):
print(i)
gives the output
0
2
4
6
8
Extra loop control is provided by the
break
andcontinue
statements.break
causes the loop to terminate at that point without executing any other code in the block,
nums = [1,2,3,-1,5,6]
list_ok = True
for i in nums:
if i < 0:
list_ok = False
break
if list_ok == False:
print('The list contains a negative number')
gives the output
The list contains a negative number
continue
causes execution to immediately jump to the next iteration of the loop,
nums = [1,2,3,-1,5,6]
pos_sum = 0
for i in nums:
if i < 0:
continue
pos_sum += i # compound assignment means pos_sum = pos_sum + i
print('Sum of positive numbers is ' + str(pos_sum))
gives the output
Sum of positive numbers is 17
An optional
else
clause can be added after the loop that will only get executed if the whole loop executes successfully,
for i in range(0,10):
print(i)
else:
print('done') # Prints numbers 0-9 and the 'done'
gives the output
0
1
2
3
4
5
6
7
8
9
done
for i in range(0,10):
if i == 5:
break
print(i)
else:
print('done') # Prints numbers 0-4
gives the output
0
1
2
3
4
While¶
While is another looping statement that simple executes until a given statement is False,
sum = 0
while sum < 10:
sum += 1 # ALWAYS remember to update the loop test or it will
# run forever!!
print(sum) # Gives value 10
gives the output
10
The
while
loop also supports the else syntax in the same manner as thefor
loop