神刀安全网

A Smooth Refresher on Python's Loops

I hope you are doing well with the Python smooth refreshers series . Let me quickly remind you that the aim of this series is to teach you in a smooth manner the main concepts you need to grasp in order to move forward in your Python learning journey.

Do you remember that day when you had to water 10 flowers? Or when you had to fill 20 cups of water? You were doing the same task on each flower or cup of water. Such repetition is called looping in programming. 

To give a feeling of the importance of looping, say that you were writing a program that should print the same statement 100,000 times. Would you dare repeat this statement 100,000 times, manually?! I won’t, and I think you won’t too. I’m sure you have much more important stuff to do. Here thus comes the beauty of looping.

Without further ado, let’s see the Python way of looping.

While Loop

In this type of iteration, as long as the test is evaluating to true , the statement or block of statements keep executing. Thus, control keeps looping back to the beginning of the statement (i.e. test), and will handle control to the next statement(s) if the test evaluates to false . If the test always evaluates to true, in this case what we have is an infinite loop .

The general syntax for the while-statement is very simple, and looks as follows:

while test:      # loop test     statements   # loop body

Remember the infinite loop term I mentioned a while ago? That is, the loop which never stops since the test is always true? Let’s see an example of such a loop:

while 1:     print 'I/'m an infinite loop. Ctrl-C to stop me!'

The value 1 is another form of the boolean value true . Thus, if you write while true , this will be equivalent to the while-statement in the example. As you will notice, you will keep getting print statements displayed infinitely. 

To terminate the loop, simply click Control-C on your keyboard. The figure below shows how the program was running infinitely and being interrupted by the keyboard (i.e. Control-C).

A Smooth Refresher on Python's Loops

Let’s now water our 10 beautiful flowers with Python. This can be done as follows:

flowers = 1 while flowers <= 10:     print 'Water the flower # ' + str(flowers)     flowers = flowers + 1

The result of the program can be shown in the following figure:

A Smooth Refresher on Python&#x27;s Loops

Before moving forward, let me clarify some points in the above Python script. You may be wondering what str() is and why we have used it here. Based on the documentation:

Return a string containing a nicely printable representation of an object. For strings, this returns the string itself. The difference with repr(object) is that  str(object) does not always attempt to return a string that is acceptable to  eval() ; its goal is to return a printable string. If no argument is given, returns the empty string,  '' .

In other words, str() will return a printable string representation of the object. But, why? Let’s see what Python would complain if we didn’t use str() :

Traceback (most recent call last):   File "test.py", line 3, in <module>     print 'Water the flower # ' + flowers TypeError: cannot concatenate 'str' and 'int' objects

So, the issue is that a str cannot be concatenated with int

The other point I want to mention is the use of flowers = flowers + 1 . If we didn’t use such a statement, we would have an infinite loop where the value of flowers would remain 1 , and thus always less than 10 (always true).

For Loop

The for-loop is an iteration that steps through the items of an ordered sequence such aslists,dictionary keys,tuples, strings, etc.

The Python for-loop syntax looks as follows:

for var in sequence:     statement(s)

Where var will hold the items of the sequence (i.e. list, tuple) that the for-loop will be iterating through, such that the for-loop body will be executed for each item in the sequence.

Time for some examples on the for-loop !

languages = ['Arabic', 'English', 'French', 'Spanish'] counter = 0 for lang in languages:     print 'This language is in the list: ' +  languages[counter]     counter = counter + 1

What happens if we initialize counter = 1 ? In this case, you will get the error shown below since at one point in the loop the index will be out of the list range:

Traceback (most recent call last):   File "test.py", line 4, in <module>     print 'This language is in the list: ' +  languages[counter] IndexError: list index out of range

A small quiz. What would be the output of the following loop? (hint: remember that Python starts counting from 0 ):

for x in range(1,5):     print x

Statements Used in While and For Loops

The subsections below will show some statements that are frequently used within loops.

break

The statement break causes the loop to terminate, and program execution is continued on the next statement.

An example of using break is shown below. It shows how the program quits ( break ) the loop when the if-statement evaluates to true .

numbers = [1,2,3,4,5,6,7,8,9,10] value = 1 while value in numbers:     if value == 5:         break     print 'I/'m # ' + str(value)     value = value + 1    print 'Sorry, I had to quit the loop when the value became 5'

continue

This statement returns control back to the beginning of the loop, ignoring any statements in the loop coming afterward. Let’s see the following example:

numbers = [1,2,3,4,5,6,7,8,9,10] value = 1 while value in numbers:     if value < 5:         print 'I/'m # ' + str(value)         value = value + 1         continue         print 'I/'m in the if-condition, why are you ignoring me?!'     elif value == 5:         break  print ('I have reached the last statement in the program and need to exit')

Did you figure out how continue works? What do you think the output of this Python script would be? Go ahead, give it a try.

pass

This statement is a bit tricky. The pass statement is a null statement, that is it doesn’t do anything. But, why do we use it? Suppose you were writing a program, and at some point you weren’t sure what should go in the for-statement for instance, as follows:

numbers = [1,2,3,4,5,6,7,8,9,10] value = 1 for value in numbers:     # not sure what to do here yet       print ('I have reached the last statement in the program and need to exit')

If you try to run the program, you will get the following error:

File "test.py", line 6     print ('I have reached the last statement in the program and need to exit')         ^ IndentationError: expected an indented block

So Python complains that there should be some statement going inside the for-loop . If you type pass in the for-loop , the output of the program will be:

I have reached the last statement in the program and need to exit

From this, we can conclude that pass acts as a placeholder to allow the program to run even if you didn’t decide yet what required statement(s) has to go in some place of the code.

else

The else statement is self-explanatory, and will simply contain a block of statements to run when the loop exits in a normal way, and not by a break . An example of its use is as follows:

numbers = [1,2,3] value = 1 while value in numbers:         print 'I/'m # ' + str(value)         value = value + 1 else:     print 'I/'m part of the else statement block'     print 'I/'m also part of the else statement block'

Conclusion

To conclude this article and to imagine the importance of looping, I remember when I had to perform those image analysis operations on each pixel of an image. 

Doing this on an image with size 256x256 only means that I had to repeat the operations 65,536 times (which is the number of pixels)! Looping to the rescue!

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » A Smooth Refresher on Python's Loops

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
分享按钮