By the end of this post you will have a solid understanding of looping in Python and be able to write you own or understand it when you read it in someone else's code.
Topics covered in this post:
for loop in Python is used to iterate over a sequence, think of this as the same as
foreach function in other programming languages, for loop in Python executes a set of statements for each item in a sequence e.g list, tuple, dictionary, set, string, range.
''' Output: Hi Bob Hi Jennifer Hi David ''' students = ["Bob", "Jennifer", "David"] for stu in students: print("Hi", stu)
range() function generates a sequence of numbers, for example,
range(10) will generate numbers from 0 to 9.
We can be more specific and specify the start, stop and step size:
range(start, stop, step) the step defaults to 1 if not given.
''' calling range directly acts in a lazy fashion and will only remember the start and stop numbers, you need to cast to something like a list. ''' range(10) # output: range(0, 10) ''' calling list function on the range will print out the desired result set. ''' list(range(10)) # output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ''' with the range function, you can change where the count begins, in the example below, we are starting the count from 3, the default is 0. ''' list(range(3, 6)) # output: [3, 4, 5] ''' we can also decide to step over the list of number by using something other than 1, in the example below we use 2 as the step number. ''' list(range(3, 12, 2)) # output: [3, 5, 7, 9, 11]
Just printing list of numbers as in the example above might be enough for what you want, but in most cases it will not be all you want to do, so for that reason you can also use for loop with the range function.
# Ouput: 0,2,4,6,8,10 for x in range(6): print(x*2) # Output: 4,5,6 for x in range(3, 6): print(x+1) # Output: 3,5,7,9,11 for x in range(3, 12, 2): print(x)
Nested looping is when you run a loop within a loop, this is useful for when you want to pass through a list and then for each item in list you want to perform additional action.
For example, you could read a file line by line and for each line you want to count how many times the word "and" was found. The outter loop will read the line and the inner loop will count the occurrences of the word "and".
In Python, nested loops are written as:
''' output: * * * * * * * * * * * * * * * ''' for i in range(1, 6): for j in range(i): print("*", end=' ') print()
The example above is a really good example of a nested loop in action, it actually has a lot packed into it, so be sure to spend sometime to understand and be able to follow the execution before you proceed.
First we have a
range(1, 5) and then in the inner loop we create different ranges starting with
range(2) up to
range(5) and each time we print
"*" with a blank space to the right of it hence
end=' ' every time we finish a roll we call the
print() to make sure we move down to the next line and start all over again.
Think of the outer loop as the rows and the inner loop and the columns.
The while loop is used to repeat a section of code an unknown number of times until a specific condition is met.
As long as the condition is not met, while loop will carry on executing.
''' This will print the numbers 1 through to 10 ''' i = 1 while i < 10: print(i) i += 1
The while loop above will continue until i < 10 is no longer true, while loop would require a way to exit otherwise it will run indefinitely, imagine running the code below, it will run forever because there is no way for i to increment and therefore i < 10 will will always be true.
# runs forever, use ctrl + c to terminate if you are using terminal i = 1 while i < 10: print(i)
Python's break statement will terminate the loop, in a while loop this will be terminated even if the condition is still
True. If the break statement is inside a nested loop, the break statement will terminate the innermost loop.
Let's see some example of this.
''' break statement in a while loop This starts with 1 and checks each time if the incrementing value is up to 3 then it terminates. output: 1 2 3 ''' i = 1 while i < 10: print(i) if i == 3: break i += 1 ''' break statement in a for loop This is similar to the one above except that we are applying a break before printing, so this will terminate earlier output: 1 2 ''' for i in range(1, 10): if(i==3): break print(i) ''' break statement in a nested loop the inner loop is terminated but the outer loop caries on. output: * * * * * ''' for i in range(1, 6): for j in range(i): if(j==1): break print("*", end=' ') print()
The continue statement is used as a way to end the current iteration in a for loop or a while loop, and continues/skip to the next iteration.
Let's see an example of this:
''' This will skip 3 and continue iterating output: 1 2 4 5 ''' i = 0 while i < 5: i += 1 if i == 3: continue print(i)
We have looked at the two types of loops in Python while loop and for in loop, spend as much time as needed to understand how they both work, when to use them and just play around with them until you feel comfortable with your loops.
Also revise on the range function, remember that range(10) would print(0 to 9) and you could manually change the start and step count etc
Hope learnt a lot from this post, please do share it so others can learn from it too.
My name is Kingsley Ijomah, I am the founder of CODEHANCE, an online education platform built with you in mind, a place where I express my gratitude to a skill ( coding ) which has changed my life completely.