Any computer program follows by default a sequential flow of execution of statements. Sometimes, the program flow may skip some statements as in the use of if – elif- else statements. If the program flow is directed towards any of earlier statements in the program, it constitutes a loop.
In above diagram, after execution of statement4, normally statement5 would have been executed. However, the control is directed to an earlier statement1. Hence, the section from statement1 to statement4 will be repeated and will keep repeating.
Sending the program control to earlier statement unconditionally causes infinite loop, which is not desired. Python uses while and for keywords to constitute conditional loop by which repeated execution of a block of statements is done until a Boolean expression is true.
In above diagram, if <expr> is true, the block (statement1, statement2, statement3) will be executed repeatedly as long as it is true. As soon as it doesn’t remain true, flow of the process comes out of loop and default path of program is undertaken.
while statement in python implements above algorithm.
General usage of while statement is as below:
while expr==True: stmt1 stmt2 stmt3 stmt4
Here while statement is followed by a conditional expression and ends with : symbol which starts a block with increased indent. In this block statements to be executed repeatedly are entered. Such block is usually called body of loop. Repeated execution continues till the condition remains true. As and when it becomes false, repetition stops and subsequent statements at previous indent level will be executed.
Let us develop a Python program that successively takes number as input from user and calculates average of numbers as long as user enters any positive number. Here, the body of loop comprises input statement, statement to add input number and count number of input.
num=0 count=0 sum=0 while num>=0: num=int(input("enter any number .. -1 to exit\n")) if num>=0: count=count+1 # this counts number of inputs sum=sum+num # this adds input number cumulatively. avg=sum/count print ("numbers input:",count, "average:",avg)
As soon as a negative number is given, the loop terminates and displays average.
enter any number .. -1 to exit 10 enter any number .. -1 to exit 20 enter any number .. -1 to exit 30 enter any number .. -1 to exit -1 numbers input: 3 average: 20.0
Python’s for keyword provides is mainly useful to iterate through items in sequence object. The body of the loop is executed for each member element in a sequence. No other Boolean expression is required to control the loop.
General usage of for statement in Python is as below:
for x in sequence: stmt1 stmt2 stmt3 stmt4
The loop starts with variable x set to item at 0th index in the sequence. Statements with increased uniformly indented block after : symbol will be executed. Variable x now refers to each subsequent item and body of loop keeps on getting executed till the sequence is exhausted.
In Python, range object is an immutable sequence of numbers. It is useful in keeping count of repetition of a block in for loop. The range() function is used as follows:
range([start], stop, [step])
All three parameters have to be integer. Value of [start] parameter is 0 by default, unless given other integer. The only mandatory parameter for above function is stop. Last number in sequence is one less than stop parameter. Numbers in between are incremented with [step] value, which is 1 by default.
For example:
range(10) will generate 0,1,2,3,4,5,6,7,8,9
range(1,5) will generate 1,2,3,4
range(20,30,2) will generate 20,22,24,26,28
We can run for loop over a range. To print each number in given range
for num in range(1,11): print (num) print ("end of sequence")
Above code prints following output.
1 2 3 4 5 6 7 8 9 10 end of sequence
Following code calculates factorial value of a number taken as input.
Factorial of a certain number is product of all numbers between 1 and itself. We use range() function to obtain the sequence. Body of for loop performs cumulative multiplication of all numbers in the range.
num=int(input("enter a number")) fact=1 for x in range(1,num+1): fact=fact*x print ("factorial of {} is {}".format(num,fact))
Sample run of above code shows factorial of 4
enter a number4 factorial of 4 is 24
As mentioned above, for loop iterates over elements in any sequence. We shall now learn to use for statement with sequence data types – string, list and tuple.
for char in " KnowledgeHut": print (char)
Above example prints one character of given string at a time.
K n o w l e d g e H u t
List and tuple object is also a sequence. If each item in list/tuple is to be processed, for statement is very much suitable. Following code computes average of all numbers in a list.
sum=0 numbers=[10,20,30,40] for num in numbers: sum=sum+num avg=sum/len(numbers) print ('average:', avg)
Output:
average: 25.0
Python’s dictionary is an unordered collection of Key-value pair items which do not have index. The for statement offers a convenient way to traverse a dictionary object. The items() method of dictionary object returns a list of tuples, each tuple having key and value corresponding to each item. We know that for loop can iterate through tuple. Following code uses for statement to print all key value pairs in
dict={1:100, 2:200, 3:300} for pair in dict.items(): print (pair)
Following output will be displayed on Python console
(1, 100) (2, 200) (3, 300)
You can unpack each pair tuple to two variables in for statement to get key and value separately.
dict={1:100, 2:200, 3:300} for k,v in dict.items(): print (k,v)
Output :
1 100 2 200 3 300
The keys() and values() methods of dictionary object also return list of keys and values from dictionary respectively. We can use them and iterate over each key/value using for loop.
dict={1:100, 2:200, 3:300} for k in dict.keys(): print (k,dict.get(k))
Just as with if statement, Python allows else keyword to be used with for and while statements too. The else block appears after the body of the loop. The else block will be executed only after all iterations are completed. Program leaves the loop only after else block is executed.
for x in range(5): print ("iteration no ", x+1) else: print ("in else block in loop") print ("end of loop")
Output of above code confirms that else block in for loop will be executed when numbers in range are over.
iteration no 1 iteration no 2 iteration no 3 iteration no 4 iteration no 5 in else block in loop end of loop
Use of else works well with while loop too.
x=0 while x<=5: x=x+1 print ("iteration no ",(x+1) else: print ("This is last statement in loop") print ("end of loop")
Normally, a loop (while or for) is employed for a certain number of repetitions of a block. The number of repetitions is decided by while condition. Length of sequence (string, list, tuple etc.) determines iterations of for loop.
However, sometimes it is required that the loop be abandoned before completing stipulated number of iterations. You may also want next iteration to start before actually completing the current round of execution of body of the loop.
Python’s break and continue keywords for these purposes respectively. They act as loop control statements.
When this keyword is used in the middle of a loop, it abandons pending iterations of current loop and control of program jumps to the statement immediately after the body of the loop.
Typical use of break is found where you need to search for an object in a collection. You will have to execute comparison expression in a loop. However, if the required object is found, since there is no need to traverse remaining collection, remaining loop iterations are skipped using break statement.
Following diagram shows exact scenario.
In above diagram, looping block will be repeatedly executed till expression1 is true. However, inside the looping block, there is another expression2 which is verified for each iteration. As soon as it is found to be true, program control breaks out of the loop.
Python has break keyword to implement this functionality. General usage of break inside a while loop is as follows:
while expression1==True: statement1 if expression2==True: break statement2 statement3
Usage of break within for loop is shown as below:
for x in sequence: statement1 if expression==True: break statement2 statement3
Following program demonstrates use of break in a loop. It accepts a number as input and determines whether it is a prime number or not. By definition, n is prime if it is not divisible by any number between the range 2 to n-1.
The for loop reads one number from the range at a time as x and checks whether it divides n. If n%x returns 0, n is not prime and it is not necessary to check it for remaining numbers and loop needs to be terminated after displaying the message to that effect. It is done by break statement.
On the other hand if no number in the range is able to divide n, it is a prime number. Appropriate message is printed in else block.
num=int(input("enter a number")) for x in range(2,num): if num%x==0: print ("{} is not prime".format(num)) break else: print ("{} is prime".format(num))
Output:
enter a number46 46 is not prime enter a number12 12 is not prime enter a number7 7 is prime enter a number29 29 is prime
The continue statement works exactly opposite to that of break. Instead of leaving the loop, continue statement skips remaining statements in current loop and starts next iteration. Following diagram shows how continue works.
When expression in the loop (expression2) is true remaining statements in the current will be skipped and program control starts next round of iteration.
Usage of continue in Python is as below:
while expression1==True: statement1 if expression2==True: continue statement2 statement3
Similarly, continue statement is used in for loop as below:
for x in sequence: statement1 if expression==True: continue statement2 statement3
Following program uses continue keyword. User is asked to input a number till it is found to be even.
count=0 while True: count=count+1 n=int(input("Enter a number")) if n%2!=0: continue print ("Got an even number on attempt no. {}".format(count)) break
Output:
Enter a number1 Enter a number3 Enter a number2 Got an even number on attempt no. 3
The pass keyword is used as a nominal placeholder whenever a certain statement is required but it is not expected to do anything. Python interpreter treats it as a null statement. It is generally used as a dummy statement in a conditional code block.
if expression: pass
The pass statement is generally used by programmers to design code framework. Initially the programmer will create no operation blocks using pass and eventually fill their functionality.
If a loop (for loop or while loop) contains another loop in its body block, the two loops are nested. If outer loop is designed to perform x iterations and inner loop is designed to perform y repetitions, body block of inner loop will get executed x X y times.
for x in range(2): for y in range(2): print ("x={} y={}".format(x,y))
Here outer loop controlled by x will have two values (0,1) and y controlling inner loop also takes two values (0,1). Hence there will be four iterations of innermost statement.
x=0 y=0 x=0 y=1 x=1 y=0 x=1 y=1
In this chapter, Python keywords related to looping mechanism have been described.
This is my first time here. I am truly impressed to read all this in one place.
Thank you for your wonderful codes and website, you helped me a lot especially in this socket module. Thank you again!
Thank you for taking the time to share your knowledge about using python to find the path! Your insight and guidance is greatly appreciated.
Usually I by no means touch upon blogs however your article is so convincing that I by no means prevent myself to mention it here.
Usually, I never touch upon blogs; however, your article is so convincing that I could not prevent myself from mentioning how nice it is written.
C# is an object-oriented programming developed by Microsoft that uses ...
Leave a Reply
Your email address will not be published. Required fields are marked *