getting_started_with_for.rst
author Nishanth <nishanth@fossee.in>
Thu, 23 Sep 2010 11:59:35 +0530
changeset 193 0d175627e828
parent 188 d0b76bc48aef
child 202 069d4e86207e
permissions -rw-r--r--
changed = to `` so that it shows properly
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
     1
.. 3.2 LO: getting started with =for= (2) [anoop] 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
     2
.. -----------------------------------------------
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
     3
.. * blocks in python 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
     4
..   + (indentation) 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
     5
.. * blocks in ipython 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
     6
..   + ... prompt 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
     7
..   + hitting enter 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
     8
.. * =for= with a list 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
     9
.. * =range= function 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    10
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    11
=============================
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    12
Getting started with for loop
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    13
=============================
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    14
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    15
{{{ show welcome slide }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    16
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    17
Hello and welcome to the tutorial getting started with ``for`` loop. 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    18
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    19
{{{ switch to next slide, outline slide }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    20
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    21
In this tutorial we will see ``for`` loops in python, and also cover
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    22
the basics of indenting code in python.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    23
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    24
.. #[Nishanth]: Instead of saying basics of indenting code,
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    25
                say How to define code blocks in Python
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    26
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    27
{{{ switch to next slide, about whitespaces }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    28
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    29
In Python whitespace is significant, and the blocks are visually
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    30
separated rather than using braces or any other mechanisms for
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    31
defining blocks. And by this method Python forces the programmers to
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    32
stick on to one way of writing or beautifying the code rather than
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    33
debating over where to place the braces. This way it produces uniform
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    34
code than obscure or unreadable code.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    35
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    36
.. #[nishanth]: Simply tell how blocks are defined in python.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    37
                The details like braces are not used and its
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    38
                advantages like neat code can be told after completely
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    39
                explaining the indentation
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    40
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    41
A block may be defined by a suitable indentation level which can be
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    42
either be a tab or few spaces. And the best practice is to indent the
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    43
code using four spaces.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    44
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    45
.. #[Nishanth]: Even this detail may be skipped. Simply say use 4 spaces
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    46
                for indentation. Do that while typing so that they can
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    47
                actually see what is being typed.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    48
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    49
Now let us move straight into ``for`` loop.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    50
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    51
{{{ switch to next slide, problem statement of exercise 1 }}}
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    52
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    53
Write a for loop which iterates through a list of numbers and find the
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    54
square root of each number. Also make a new list with the square roots
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    55
and print it at the end.
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    56
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    57
.. #[nishanth]: making new list with square roots induces extra complication
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    58
                like appending which has no use case here
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    59
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    60
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    61
    numbers are 1369, 7225, 3364, 7056, 5625, 729, 7056, 576, 2916
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    62
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    63
.. #[Nishanth]: The problem focuses more on square root and creation
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    64
                of list. The problem must be simple and focusing on 
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    65
                nothing more but the indentation and for loop.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    66
                May be change the problem to print squares than to
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    67
                print square roots.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    68
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    69
For the problem, first we need to create a ``list`` of numbers and
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    70
then iterate over the list and find the square root of each element in
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    71
it. And let us create a script, rather than typing it out in the
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    72
interpreter itself. Create a script called list_roots.py and type the
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    73
following.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    74
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    75
{{{ open the text editor and paste the following code there }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    76
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    77
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    78
    numbers = [1369, 7225, 3364, 7056, 5625, 729, 7056, 576, 2916]
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    79
    square_roots = []
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    80
    for each in numbers:
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    81
        sq_root = sqrt(each)
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    82
        print "Square root of", each, "is", sq_root
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    83
        square_roots.append(sq_root)
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    84
    print 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    85
    print square_roots
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    86
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    87
..  numbers = [1, 12, 3, 4, 21, 17]
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    88
    for each in numbers:
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    89
        print each, each * each
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    90
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    91
.. #[nishanth]: I don't see a use case to append the sq_root to
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    92
                square_roots. It is only complicating stuff.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    93
                Simply iterate and print.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    94
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    95
{{{ save the script }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    96
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    97
Now save the script, and run it from your IPython interpreter. I
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    98
assume that you have started your IPython interpreter using ``-pylab``
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    99
option.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   100
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   101
Run the script as,
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   102
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   103
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   104
    %run -i list_roots.py
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   105
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   106
.. #[Nishanth]: you don't have to use the -i option here
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   107
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   108
{{{ run the script }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   109
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   110
So that was easy! We didn't have to find the length of the string nor
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   111
address of each element of the list one by one. All what we did was
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   112
iterate over the list element by element and then use the element for
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   113
calculation. Note that here we used three variables. One the variable
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   114
``numbers``, which is a list, another one ``each``, which is the
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   115
element of list under consideration in each cycle of the ``for`` loop,
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   116
and then a variable ``sq_root`` for storing the square root in each
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   117
cycle of the ``for`` loop. The variable names can be chosen by you.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   118
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   119
.. #[Nishanth]: The details like we didn't have to find the length
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   120
                are relevant for people who have programmed in C or
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   121
                other languages earlier. But for a newbie it is more
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   122
                of confusing extra info. That part may be skipped.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   123
                Simply go ahead and focus on the syntax of for loop.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   124
                And how the variable name is used inside the for loop.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   125
                If you modify the question to only print, the extra 
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   126
                variable sq_root can also be avoided. let it be more
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   127
                about "each", "numbers" and "for". no other new names.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   128
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   129
{{{ show the script which was created }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   130
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   131
Note that three lines after ``for`` statement, are indented using four
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   132
spaces.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   133
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   134
{{{ highlight the three lines after for statement }}}
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   135
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   136
It means that those three lines are part of the for loop. And it is
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   137
called a block of statements. And the seventh line or the immediate
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   138
line after the third line in the ``for`` loop is not indented, 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   139
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   140
{{{ highlight the seventh line - the line just after for loop }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   141
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   142
it means that it is not part of the ``for`` loop and the lines after
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   143
that doesn't fall in the scope of the ``for`` loop. Thus each block is
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   144
separated by the indentation level. Thus marking the importance of
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   145
white-spaces in Python.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   146
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   147
{{{ switch to the slide which shows the problem statement of the first
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   148
problem to be tried out }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   149
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   150
Now a question for you to try, from the given numbers make a list of
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   151
perfect squares and a list of those which are not. The numbers are,
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   152
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   153
    
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   154
    7225, 3268, 3364, 2966, 7056, 5625, 729, 5547, 7056, 576, 2916
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   155
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   156
{{{ switch to next slide, problem statement of second problem in
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   157
solved exercie}}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   158
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   159
Now let us try a simple one, to print the square root of numbers in
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   160
the list. And this time let us do it right in the IPython
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   161
interpreter. 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   162
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   163
{{{ switch focus to the IPython interpreter }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   164
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   165
So let us start with making a list. Type the following
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   166
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   167
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   168
    numbers = [1369, 7225, 3364, 7056, 5625, 729, 7056, 576, 2916]
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   169
    for each in numbers:
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   170
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   171
and now you will notice that, as soon as you press the return key
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   172
after for statement, the prompt changes to four dots and the cursor is
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   173
not right after the four dots but there are four spaces from the
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   174
dots. The four dots tell you that you are inside a block. Now type the
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   175
rest of the ``for`` loop,
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   176
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   177
.. #[Nishanth]: Tell that IPython does auto indentation.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   178
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   179
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   180
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   181
        sq_root = sqrt(each)
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   182
        print "Square root of", each, "is", sq_root
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   183
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   184
Now we have finished the statements in the block, and still the
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   185
interpreter is showing four dots, which means you are still inside the
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   186
block. To exit from the block press return key or the enter key twice
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   187
without entering anything else. It printed the square root of each
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   188
number in the list, and that is executed in a ``for`` loop.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   189
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   190
Now, let us generate the multiplication table of 10 from one to
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   191
ten. But this time let us try it in the vanilla version of Python
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   192
interpreter.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   193
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   194
Start the vanilla version of Python interpreter by issuing the command
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   195
``python`` in your terminal.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   196
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   197
{{{ open the python interpreter in the terminal using the command
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   198
python to start the vanilla Python interpreter }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   199
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   200
Start with,
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   201
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   202
    
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   203
    for i in range(1,11):
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   204
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   205
and press enter once, and we will see that this time it shows four
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   206
dots, but the cursor is close to the dots, so we have to indent the
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   207
block. So enter four spaces there and then type the following
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   208
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   209
    
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   210
    
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   211
        print "10 x",i,"=",i*10
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   212
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   213
Now when we hit enter, we still see the four dots, to get out of the
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   214
block, hit enter once again
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   215
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   216
.. #[Nishanth]: Here also the overhead on print can be reduced.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   217
                Think of a simple print statement. This statement
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   218
                will be confusing for a newbie.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   219
                We can focus more on indentation in python.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   220
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   221
.. #[nishanth]: Not sure if you must use range here. You can 
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   222
                define a list of numbers and iterate on it.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   223
                Then say this list can also be generated using
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   224
                the range function and hence introduce range.
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   225
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   226
Okay! so the main thing here we learned is how to use Python
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   227
interpreter and IPython interpreter to specify blocks. But while we
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   228
were generating the multiplication table we used something new,
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   229
``range()`` function. ``range()`` is an inbuilt function in Python
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   230
which can be used to generate a ``list`` of integers from a starting
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   231
number to an ending number. Note that the ending number that you specify
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   232
will not be included in the ``list``.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   233
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   234
.. #[Nishanth]: Show some examples of range without the step argument
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   235
                May be give an exercise with negative numbers as arguments
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   236
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   237
Now, let us print all the odd numbers from 1 to 50. Let us do it in
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   238
our IPython interpreter for ease of use.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   239
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   240
{{{ switch focus to ipython interpreter }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   241
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   242
{{{ switch to next slide, problem statement of the next problem in
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   243
solved exercises }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   244
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   245
Print the list of odd numbers from 1 to 50. It will be better if
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   246
you can try it out yourself.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   247
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   248
It is a very trivial problem and can be solved as,
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   249
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   250
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   251
    print range(1,51,2)
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   252
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   253
This time we passed three parameters to ``range()`` function unlike
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   254
the previous case where we passed only two parameters. The first two
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   255
parameters are the same in both the cases. The first parameter is the
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   256
starting number of the sequence and the second parameter is the end of
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   257
the range. Note that the sequence doesn't include the ending
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   258
number. The third parameter is for stepping through the sequence. Here
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   259
we gave two which means we are skipping every alternate element.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   260
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   261
{{{ switch to next slide, recap slide }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   262
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   263
Thus we come to the end of this tutorial. We learned about blocks in
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   264
Python, indentation, blocks in IPython, for loop, iterating over a
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   265
list and then the ``range()`` function.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   266
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   267
{{{ switch to next slide, thank you slide }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   268
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   269
Thank you!
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   270
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   271
..  Author: Anoop Jacob Thomas <anoop@fossee.in>
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   272
    Reviewer 1: Nishanth
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   273
    Reviewer 2:
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   274
    External reviewer: