author | amit |
Thu, 23 Sep 2010 12:51:32 +0530 | |
changeset 203 | 846d71a4e915 |
parent 202 | 069d4e86207e |
child 206 | 8835b2c071e6 |
permissions | -rw-r--r-- |
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 | 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 | 41 |
.. #[Amit]: Do you want to do that here. May be its better to talk about |
42 |
this after some initiation into the idea of blocks. |
|
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 |
|
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 | 270 |
.. #[Amit]: There does seem to too much overhead of details. Should |
271 |
the first example be done using script is it necessary. |
|
272 |
Do add some things in evolutionary manner. Like introducing |
|
273 |
range as a list and doing a very very simple for loop.Like |
|
274 |
iterating over [1,2,3] .Before getting into a problem. |
|
275 |
And club details about problem in one paragraph and syntactic details |
|
276 |
in other. |
|
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 | 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: |