.. Objectives .. ---------- .. At the end of this tutorial, you will be able to .. 1. Write blocks of code in python. .. #. Use for loop. .. #. Use ``range()`` function. .. #. Write blocks in python interpreter .. #. Write blocks in ipython interpreter. .. Prerequisites .. ------------- .. 1. should have ``ipython`` and ``pylab`` installed. .. #. getting started with ``ipython``. .. #. getting started with lists. .. Author : Anoop Jacob Thomas Internal Reviewer : Nishanth Internal Reviewer(2): Amit External Reviewer : Language Reviewer : Bhanukiran Checklist OK? : <10-11-2010, Anand, OK> [2010-10-05] ============================= Getting started with for loop ============================= .. L1 {{{ Show the first slide containing title, name of the production team along with the logo of MHRD }}} .. R1 Hello and welcome to the tutorial on `Getting started with ``for`` loop`. .. L2 {{{ Show slide with objectives }}} .. R2 At the end of this tutorial, you will be able to, 1. Write blocks of code in python using indentation. #. Use the ``for`` loop. #. Use ``range()`` function. #. Write blocks in python interpreter #. Write blocks in ipython interpreter. .. L3 {{{ Show slide with pre-requisite }}} {{{ switch to next slide, 'Whitespace in python' }}} .. R3 Before beginning this tutorial,we would suggest you to complete the tutorial on "Getting started with Lists". In Python whitespace is significant, and the blocks are visually separated.The best practice is to indent the code using four spaces. As you can see in the slide, "Block B" is an inner block, indented by 4 spaces. After "Block B" the next statement in "Block A" starts from the same indentation level of other "Block A" Statements. .. R4 Start the ipython interpreter using ipython -pylab. .. L4 :: ipython -pylab .. R5 Now let us move straight into ``for`` loop. .. L5 .. L6 {{{ switch to slide showing exercise 1 }}} .. R6 Write a for loop which iterates through a list of numbers and find the square root of each number. numbers are 1369, 7225, 3364, 7056, 5625, 729, 7056, 576, 2916 .. R7 For the problem, first we need to create a ``list`` of numbers and then iterate over the list and find the square root of each element in it. And let us create a script, rather than typing it out in the interpreter itself. Open your text editor and type the following code shown on the slide. .. L7 {{{ Switch to the slide Solution 1 }}} .. L8 {{{ switch to next slide, save & run script }}} .. R8 Now switch to your terminal and run the script as, .. L9 :: %run -i list_roots.py .. R9 So that was easy! All what we did was iterate over the list element by element and then use the element for calculation. Note that here we used two variables,the variable ``numbers``, which is a list,and the other variable ``each``, which is the element of list under consideration in each cycle of the ``for`` loop. The variable names can be chosen by you. .. L10 {{{ show the script which was created }}} .. R10 Note that the lines after ``for`` statement, is indented using four spaces. .. L11 {{{ highlight the line after ``for`` statement }}} .. R11 It means that line is a part of the for loop. And it is a block of code, although it is only a single statement in the block. Also, the fourth line or the immediate line after the ``for`` block is not indented. .. L12 {{{ Highlight the fourth line - the line just after for loop }}} .. R12 It means that it is not a part of the ``for`` loop and the lines after that dont fall in the scope of the ``for`` loop. Thus each block is separated by the indentation level and that marks the importance of white-spaces in Python. .. L13 {{{ switch to slide showing exercise 2 }}} .. R13 Print the square root of numbers in the list. And this time let us do it right in the IPython interpreter. So let us create a list. .. L14 {{{ switch focus to the IPython interpreter }}} :: numbers = [1369, 7225, 3364, 7056, 5625, 729, 7056, 576, 2916] for each in numbers: {{{ Hit enter }}} .. R14 You will notice that, as soon as you press the enter key after for statement, the prompt changes to four dots and the cursor is not right after the four dots but there are four spaces from the dots. .. L15 {{{ Higlight the four dots }}} .. R15 Please note that IPython automatically indents the block. The four dots tell you that you are inside a block. .. R16 Now type the rest of the ``for`` loop, .. L16 :: print "Square root of", each, print "is", sqrt(each) .. R17 Now we have finished the statements in the block, and still the interpreter is showing four dots, this means that you are still inside the block. To exit from the block press the return key or the enter key twice without entering anything else. .. L17 {{{ Hit enter twice }}} .. R18 It printed the square root of each number in the list, which was executed in the ``for`` loop. .. L18 .. L19 {{{ switch to slide exercise 3 }}} .. R19 Find the cube of all the numbers from one to ten. But this time let us try it in the vanilla version of Python interpreter. .. R20 Start the vanilla version of Python interpreter by issuing the command ``python`` in your terminal. .. L20 {{{ Switch to the terminal }}} :: python for i in range(1,11): {{{ Hit enter }}} .. R21 press enter once, and we will see that this time it shows four dots, but the cursor is close to the dots, so we have to indent the block. .. L21 {{{ Highlight the cursor }}} .. R22 The vanilla version of Python interpreter does not indent the code automatically. So enter four spaces there and then type the following .. L22 :: print i, "cube is", i**3 .. R23 Now when we hit enter, we still see the four dots.To get out of the block, hit enter once again. .. L23 {{{ Hit enter }}} .. L24 {{{ switch to the next slide, ``range()`` function }}} .. R24 Okay! so the main thing we learnt here is how to use the Python interpreter and the IPython interpreter to specify blocks. But while we were generating the multiplication table we used something new, ``range()`` function. ``range()`` is an inbuilt function in Python which can be used to generate a ``list`` of integers from a starting number to an ending number. Note that the ending number that you specify will not be included in the ``list``. .. L25 {{{ switch to next slide exercise 4 }}} .. R25 Print all the odd numbers from 1 to 50. Let us do it in our IPython interpreter for ease of use. .. L26 {{{ switch focus to ipython interpreter }}} :: ipython .. R26 The problem can be solved by just using the ``range()`` function. It can be solved as, .. L27 :: print range(1,51,2) .. R27 This time we passed three parameters to ``range()`` function unlike the previous case where we passed only two parameters. The first two parameters are same in both the cases. The first parameter is the starting number of the sequence and the second parameter is the end of the range. Note that the sequence does not include the ending number. The third parameter is for stepping through the sequence. Here we gave two which means we are skipping every alternate element. .. L28 {{{ switch to Summary slide }}} .. R28 This brings us to the end of the tutorial.In this tutorial,we learnt to, 1. create blocks in python using ``for`` loop #. indent the blocks of code #. iterate over a list using ``for`` loop #. use the ``range()`` function .. L29 {{Show self assessment questions slide}} .. R29 Here are some self assessment questions for you to solve 1. Indentation is not mandatory in Python - True - False 2. Write a code using ``for`` loop to print the product of all natural numbers from 1 to 20. 3. What will be the output of- :: range(1,5) .. L30 {{{ solution of self assessment questions on slide }}} .. R30 And the answers, 1. False.Indentation is essential in python. 2. We use the ``for`` loop in the following manner. :: y = 1 for x in range(1,21): y*=x print y 3. ``range(1,5)`` will produce a list of integers from 1 to 4. [1,2,3,4] .. L31 {{{ switch to Thank you slide }}} .. R31 Hope you have enjoyed this tutorial and found it useful. Thank you!