getting_started_with_for.rst
author amit
Thu, 23 Sep 2010 16:47:08 +0530
changeset 208 0f78508a4478
parent 203 846d71a4e915
child 206 8835b2c071e6
permissions -rw-r--r--
Some punctuation changes
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
202
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
    21
In this tutorial we will learn about ``for`` loops in python, and also cover
161
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
202
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
    41
.. #[Amit]: Do you want to do that here. May be its better to talk about 
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
    42
   this after some initiation into the idea of blocks. 
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
    43
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    44
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
    45
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
    46
code using four spaces.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    47
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    48
.. #[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
    49
                for indentation. Do that while typing so that they can
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    50
                actually see what is being typed.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    51
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    52
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
    53
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    54
{{{ 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
    55
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    56
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
    57
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
    58
and print it at the end.
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    59
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    60
.. #[nishanth]: making new list with square roots induces extra complication
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    61
                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
    62
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    63
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    64
    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
    65
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    66
.. #[Nishanth]: The problem focuses more on square root and creation
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    67
                of list. The problem must be simple and focusing on 
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    68
                nothing more but the indentation and for loop.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    69
                May be change the problem to print squares than to
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    70
                print square roots.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    71
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    72
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
    73
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
    74
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
    75
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
    76
following.
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
{{{ 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
    79
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    80
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    81
    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
    82
    square_roots = []
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    83
    for each in numbers:
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    84
        sq_root = sqrt(each)
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    85
        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
    86
        square_roots.append(sq_root)
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    87
    print 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    88
    print square_roots
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    89
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    90
..  numbers = [1, 12, 3, 4, 21, 17]
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    91
    for each in numbers:
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    92
        print each, each * each
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    93
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    94
.. #[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
    95
                square_roots. It is only complicating stuff.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    96
                Simply iterate and print.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
    97
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    98
{{{ save the script }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
    99
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   100
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
   101
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
   102
option.
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 the script as,
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   105
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   106
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   107
    %run -i list_roots.py
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   108
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   109
.. #[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
   110
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   111
{{{ run the script }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   112
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   113
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
   114
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
   115
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
   116
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
   117
``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
   118
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
   119
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
   120
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
   121
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   122
.. #[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
   123
                are relevant for people who have programmed in C or
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   124
                other languages earlier. But for a newbie it is more
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   125
                of confusing extra info. That part may be skipped.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   126
                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
   127
                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
   128
                If you modify the question to only print, the extra 
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   129
                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
   130
                about "each", "numbers" and "for". no other new names.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   131
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   132
{{{ show the script which was created }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   133
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   134
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
   135
spaces.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   136
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   137
{{{ 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
   138
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   139
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
   140
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
   141
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
   142
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   143
{{{ 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
   144
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   145
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
   146
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
   147
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
   148
white-spaces in Python.
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
{{{ 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
   151
problem to be tried out }}}
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
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
   154
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
   155
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   156
    
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   157
    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
   158
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   159
{{{ 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
   160
solved exercie}}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   162
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
   163
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
   164
interpreter. 
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   165
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   166
{{{ switch focus to the IPython interpreter }}}
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
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
   169
::
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
    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
   172
    for each in numbers:
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   173
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   174
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
   175
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
   176
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
   177
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
   178
rest of the ``for`` loop,
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   179
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   180
.. #[Nishanth]: Tell that IPython does auto indentation.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   181
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   182
::
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
        sq_root = sqrt(each)
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   185
        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
   186
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   187
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
   188
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
   189
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
   190
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
   191
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
   192
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   193
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
   194
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
   195
interpreter.
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
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
   198
``python`` in your terminal.
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
{{{ 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
   201
python to start the vanilla Python interpreter }}}
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
Start with,
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
    
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   206
    for i in range(1,11):
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   207
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   208
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
   209
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
   210
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
   211
::
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
    
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   214
        print "10 x",i,"=",i*10
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   215
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   216
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
   217
block, hit enter once again
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   218
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   219
.. #[Nishanth]: Here also the overhead on print can be reduced.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   220
                Think of a simple print statement. This statement
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   221
                will be confusing for a newbie.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   222
                We can focus more on indentation in python.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   223
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   224
.. #[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
   225
                define a list of numbers and iterate on it.
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   226
                Then say this list can also be generated using
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   227
                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
   228
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   229
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
   230
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
   231
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
   232
``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
   233
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
   234
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
   235
will not be included in the ``list``.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   236
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   237
.. #[Nishanth]: Show some examples of range without the step argument
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   238
                May be give an exercise with negative numbers as arguments
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   239
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   240
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
   241
our IPython interpreter for ease of use.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   242
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   243
{{{ switch focus to ipython interpreter }}}
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
{{{ 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
   246
solved exercises }}}
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
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
   249
you can try it out yourself.
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
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
   252
::
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   253
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   254
    print range(1,51,2)
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   255
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   256
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
   257
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
   258
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
   259
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
   260
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
   261
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
   262
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
   263
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   264
{{{ switch to next slide, recap slide }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   265
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   266
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
   267
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
   268
list and then the ``range()`` function.
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   269
202
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
   270
.. #[Amit]: There does seem to too much overhead of details. Should
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
   271
            the first example be done using script is it necessary. 
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
   272
	    Do add some things in evolutionary manner. Like introducing 
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
   273
	    range as a list and doing a very very simple for loop.Like
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
   274
	    iterating over [1,2,3] .Before getting into a problem.
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
   275
	    And club details about problem in one paragraph and syntactic details
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
   276
	    in other.
069d4e86207e review for getting started with for
amit
parents: 188
diff changeset
   277
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   278
{{{ switch to next slide, thank you slide }}}
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   279
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   280
Thank you!
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   281
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   282
..  Author: Anoop Jacob Thomas <anoop@fossee.in>
188
d0b76bc48aef reviewed getting_started_with_lists
Nishanth <nishanth@fossee.in>
parents: 161
diff changeset
   283
    Reviewer 1: Nishanth
203
846d71a4e915 changes progress file
amit
parents: 202
diff changeset
   284
    Reviewer 2: Amit Sethi
161
b7c47307e510 added dictionaries, getting started with for, other_type_of_plots and savefig.
anoop
parents:
diff changeset
   285
    External reviewer: