Parially cleaned up conditionals LO.
--- a/conditionals/questions.rst Wed Nov 10 10:47:21 2010 +0530
+++ b/conditionals/questions.rst Wed Nov 10 12:32:16 2010 +0530
@@ -75,5 +75,6 @@
.. A minimum of 2 questions here (along with answers)
-1. Question 1
-2. Question 2
+1.
+
+2.
--- a/conditionals/script.rst Wed Nov 10 10:47:21 2010 +0530
+++ b/conditionals/script.rst Wed Nov 10 12:32:16 2010 +0530
@@ -1,14 +1,20 @@
.. Objectives
.. ----------
-.. Clearly state the objectives of the LO (along with RBT level)
+.. By the end of this tutorial, you will be able to
+
+.. * Use if/else blocks
+.. * Use if/elif/else blocks
+.. * Use the Ternary conditional statement - C if X else Y
+
+.. to check conditions in your programs.
+
.. Prerequisites
.. -------------
-.. 1. Name of LO-1
-.. 2. Name of LO-2
-.. 3. Name of LO-3
+.. 1. Basic datatypes and operators
+
.. Author : Madhu
Internal Reviewer :
@@ -21,8 +27,7 @@
{{{ Show the slide containing the title }}}
-Hello friends. Welcome to this spoken tutorial on Getting started with
-strings.
+Hello friends. Welcome to this spoken tutorial on Conditionals
{{{ Show the slide containing the outline }}}
@@ -40,10 +45,12 @@
Whenever we have two possible states that can occur depending on a
whether a certain condition we can use if/else construct in
-Python. Say for example we have a variable "a" which stores integers
-and we are required to find out whether the value of the variable "a"
-is an even number or an odd number. To test out conditional statements
-as an example, let us say the value of the variable "a" is 5::
+Python.
+
+For example, say, we have a variable ``a`` which stores integers and
+we are required to find out whether ``a`` is even or odd. an even
+number or an odd number. Let's say the value of ``a`` is 5, now.
+::
a = 5
@@ -54,36 +61,29 @@
else:
print "Odd"
-When the value of the variable "a" is divided by 2 and the remainder
-is 0 i.e. the result of the operation "a modulo 2" is 0 the condition
-"a % 2 == 0" evaluates to True, so the code within the if block gets
-executed. This means that the value of "a" is Even.
+If ``a`` is divisible by 2, i.e., the result of "a modulo 2" is 0, it
+prints "Even", otherwise it prints "Odd".
+
+Note that in such a case, only one of the two blocks gets executed
+depending on whether the condition is ``True`` or ``False``.
-If the operation "a modulo 2" is not 0 the condition "a % 2 == 0"
-evaluates to False and hence the code block within else gets executed
-which means that the value of "a" is Odd.
-
-Note in such a case only one of the two blocks get executed depending
-on whether the condition is True or False.
+There is a very important sytactic element to understand here. Every
+code block begins with a line that ends with a ``:``, in this example
+the ``if`` and the ``else`` lines. Also, all the statements inside a
+code block are intended by 4 spaces. Returning to the previous
+indentation level, ends the code block.
-There is a very important sytactic element to understand here. All the
-statements which are inside a certain code block are indented by 4
-spaces. The statement which starts a new code block after it, i.e. the
-if statement in this example ends with a colon (:). So the next
-immediate line will be inside the if block and hence indented by 4
-spaces. To come out of the code block we have to come back to the
-previous indentation level as shown in the else line here. Again the
-line following else will be in a new block so else line ends with a
-colon and the following block of code is indented by 4.
+The if/else blocks work for a condition, which can take one of two
+states. What do we do for conditions, which can take more than two
+states?
-As we use if/else statement when we have a condition which can take
-one of the two states, we may have conditions which can take more than
-two states. In such a scenario Python provides if/elif/else
-statements. Let us take an example. We have a variable "a" which holds
-integer values. We need to print "positive" if the value of a is
-positive, "negative" if it is negative and "zero" if the value of the
-variable "a" is 0. Let us use if/elif/else ladder for it. For the
-purposes of testing our code let us assume that the value of a is -3::
+Python provides if/elif/else blocks, for such conditions. Let us take
+an example. We have a variable ``a`` which holds integer values. We
+need to print "positive" if ``a`` is positive, "negative" if
+it is negative or "zero" if it is 0.
+
+Let us use if/elif/else ladder for it. For the purposes of testing our
+code let us assume that the value of a is -3::
a = -3
@@ -94,18 +94,18 @@
else:
print "zero"
-This if/elif/else ladder is self explanatory. All the syntax and rules
-as said for if/else statements hold. The only addition here is the
-elif statement which can have another condition of its own.
+All the syntax and rules as said for if/else statements hold. The only
+addition here is the ``elif`` statement which can have another
+condition of its own.
-Here, exactly one block of code is executed and that block of code
-corresponds to the condition which first evaluates to True. Even if
-there is a situation where multiple conditions evaluate to True all
-the subsequent conditions other than the first one which evaluates to
-True are neglected. Consequently, the else block gets executed if and
-only if all the conditions evaluate to False.
+Here too, exactly one block of code is executed -- the block of code
+which first evaluates to ``True``. Even if there is a situation where
+multiple conditions evaluate to True all the subsequent conditions
+other than the first one which evaluates to True are neglected.
+Consequently, the else block gets executed if and only if all the
+conditions evaluate to False.
-Also, the else block in both if/else statement and if/elif/else is
+Also, the ``else`` block in both if/else statement and if/elif/else is
optional. We can have a single if statement or just if/elif statements
without having else block at all. Also, there can be any number of
elif's within an if/elif/else ladder. For example
@@ -124,6 +124,12 @@
is completely valid. Note that there are multiple elif blocks and there
is no else block.
+Following is an exercise that you must do.
+
+%% %%
+
+Please, pause the video here. Do the exercise and then continue.
+
In addition to these conditional statements, Python provides a very
convenient ternary conditional operator. Let us take the following
example where we read the marks data from a data file which is
@@ -147,10 +153,16 @@
it is 0. This means that we make the scores of the students who were
absent for the exam 0.
-Moving on, there are certain situations where we will have to no
-operations or statements within the block of code. For example, we
-have a code where we are waiting for the keyboard input. If the user
-enters "s" as the input we would perform some operation nothing
+Following is an exercise that you must do.
+
+%% %%
+
+Please, pause the video here. Do the exercise and then continue.
+
+Moving on, there are certain situations where we will have no
+operations or statements within a block of code. For example, we have
+a code where we are waiting for the keyboard input. If the user enters
+"c", "d" or "x" as the input we would perform some operation nothing
otherwise. In such cases "pass" statement comes very handy::
a = raw_input("Enter 'c' to calculate and exit, 'd' to display the existing
@@ -167,8 +179,7 @@
In this case "pass" statement acts as a place holder for the block of
code. It is equivalent to a null operation. It literally does
-nothing. So "pass" statement can be used as a null operation
-statement, or it can used as a place holder when the actual code
+nothing. It can used as a place holder when the actual code
implementation for a particular block of code is not known yet but has
to be filled up later.
--- a/conditionals/slides.org Wed Nov 10 10:47:21 2010 +0530
+++ b/conditionals/slides.org Wed Nov 10 12:32:16 2010 +0530
@@ -18,7 +18,7 @@
#+LaTeX_HEADER: commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen},
#+LaTeX_HEADER: showstringspaces=false, keywordstyle=\color{blue}\bfseries}
-#+TITLE: Accessing parts of arrays
+#+TITLE: Conditionals
#+AUTHOR: FOSSEE
#+EMAIL:
#+DATE:
@@ -30,81 +30,26 @@
#+OPTIONS: TeX:t LaTeX:nil skip:nil d:nil todo:nil pri:nil tags:not-in-toc
* Outline
- - Manipulating one and multi dimensional arrays
- - Access and change individual elements
- - Access and change rows and columns
- - Slicing and striding on arrays to access chunks
- - Read images into arrays and manipulations
-* Sample Arrays
- #+begin_src python
- In []: A = array([12, 23, 34, 45, 56])
-
- In []: C = array([[11, 12, 13, 14, 15],
- [21, 22, 23, 24, 25],
- [31, 32, 33, 34, 35],
- [41, 42, 43, 44, 45],
- [51, 52, 53, 54, 55]])
-
- #+end_src
+
* Question 1
- Change the last column of ~C~ to zeroes.
+
* Solution 1
#+begin_src python
- In []: C[:, -1] = 0
- #+end_src
-* Question 2
- Change ~A~ to ~[11, 12, 13, 14, 15]~.
-* Solution 2
- #+begin_src python
- In []: A[:] = [11, 12, 13, 14, 15]
- #+end_src
-* squares.png
- #+begin_latex
- \begin{center}
- \includegraphics[scale=0.6]{squares}
- \end{center}
- #+end_latex
-* Question 3
- - obtain ~[22, 23]~ from ~C~.
- - obtain ~[11, 21, 31, 41]~ from ~C~.
- - obtain ~[21, 31, 41, 0]~.
-* Solution 3
- #+begin_src python
- In []: C[1, 1:3]
- In []: C[0:4, 0]
- In []: C[1:5, 0]
- #+end_src
-* Question 4
- Obtain ~[[23, 24], [33, -34]]~ from ~C~
-* Solution 4
- #+begin_src python
- In []: C[1:3, 2:4]
- #+end_src
-* Question 5
- Obtain the square in the center of the image
-* Solution 5
- #+begin_src python
- In []: imshow(I[75:225, 75:225])
- #+end_src
-* Question 6
- Obtain the following
- #+begin_src python
- [[12, 0], [42, 0]]
- [[12, 13, 14], [0, 0, 0]]
+
#+end_src
-* Solution 6
+* ~if/elif~ ladder
#+begin_src python
- In []: C[::3, 1::3]
- In []: C[::4, 1:4]
+ if user == 'admin':
+ # Do admin operations
+ elif user == 'moderator':
+ # Do moderator operations
+ elif user == 'client':
+ # Do customer operations
#+end_src
+
* Summary
- You should now be able to --
- - Manipulate 1D \& Multi dimensional arrays
- - Access and change individual elements
- - Access and change rows and columns
- - Slice and stride on arrays
- - Read images into arrays and manipulate them.
+
* Thank you!
#+begin_latex
\begin{block}{}
--- a/progress.org Wed Nov 10 10:47:21 2010 +0530
+++ b/progress.org Wed Nov 10 12:32:16 2010 +0530
@@ -34,8 +34,8 @@
| 5.5 LO: | Assessment | 3 | Anoop | | |
|---------+----------------------------------------+-------+----------+-----------------+-----------|
| 6.1 LO: | basic datatypes & operators | 4 | Amit | Punch (Done) | |
-| 6.2 LO: | I/O | 1 | Nishanth | Amit(Done) | |
-| 6.3 LO: | conditionals | 2 | Madhu | | |
+| 6.2 LO: | I/O | 1 | Nishanth | Amit (Done) | |
+| 6.3 LO: | conditionals | 2 | Madhu | Punch (Pending) | |
| 6.4 LO: | loops | 2 | Punch | Anoop (Done) | |
| 6.5 LO: | Assessment | 3 | Anoop | | |
|---------+----------------------------------------+-------+----------+-----------------+-----------|
--- a/progress.org.orig Wed Nov 10 10:47:21 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-| S.No | Name | Units | Author | Review | Checklist |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 1.2 LO: | getting started with =ipython= | 2 | Punch | Anoop (Done) | |
-| 1.3 LO: | using the =plot= command interactively | 2 | Amit | | |
-| 1.4 LO: | embellishing a plot | 2 | Nishanth | Anoop (Done) | |
-| 1.5 LO: | saving plots | 2 | Anoop | | |
-| 1.6 LO: | multiple plots | 3 | Madhu | Nishanth (Done) | |
-| 1.7 LO: | additional features of IPython | 2 | Nishanth | Amit (Pending) | |
-| 1.8 LO: | module level assessment | 3 | Madhu | | |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 2.2 LO: | loading data from files | 3 | Punch | Nishanth (Done) | |
-| 2.3 LO: | plotting the data | 3 | Amit | | |
-| 2.4 LO: | other types of plots | 3 | Anoop | Pending | |
-| 2.5 LO: | module level assessment | 3 | Nishanth | | |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 3.1 LO: | getting started with lists | 2 | Amit | | |
-| 3.2 LO: | getting started with =for= | 2 | Anoop | Nishanth (Done) | |
-| 3.3 LO: | getting started with strings | 2 | Madhu | | |
-| 3.4 LO: | getting started with files | 3 | Punch | Anoop(Done) | |
-| 3.5 LO: | parsing data | 3 | Nishanth | Amit (Done) | |
-| 3.6 LO: | statistics | 2 | Amit | | |
-| 3.7 LO: | module level assessment | 3 | Madhu | | |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 4.1 LO: | getting started with arrays | 2 | Anoop | Punch (Done) | |
-| 4.2 LO: | accessing parts of arrays | 4 | Punch | Anoop (Done) | |
-| 4.3 LO: | Matrices | 3 | Anoop | Punch (changes before further review) | |
-| 4.4 LO: | Least square fit | 2 | Nishanth | Punch (Done) | |
-| 4.5 LO: | Assessment | 3 | Punch | | |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 5.1 LO: | getting started with sage notebook | 3 | Madhu | | |
-| 5.2 LO: | getting started with symbolics | 3 | Amit | | |
-| 5.3 LO: | using Sage | 4 | Punch | Anoop (Pending) | |
-| 5.4 LO: | using sage to teach | 3 | Nishanth | | |
-| 5.5 LO: | Assessment | 3 | Anoop | | |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 6.1 LO: | basic datatypes & operators | 4 | Amit | Punch (Done) | |
-| 6.2 LO: | I/O | 1 | Nishanth | | |
-| 6.3 LO: | conditionals | 2 | Madhu | | |
-| 6.4 LO: | loops | 2 | Puneeth | Anoop(Pending) | |
-| 6.5 LO: | Assessment | 3 | Anoop | | |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 7.1 LO: | manipulating lists | 3 | Madhu | | |
-| 7.2 LO: | manipulating strings | 2 | Punch | Anoop | Amit |
-| 7.3 LO: | getting started with tuples | 2 | Nishanth | | |
-| 7.4 LO: | dictionaries | 2 | Anoop | Pending | |
-| 7.5 LO: | sets | 2 | Nishanth | | |
-| 7.6 LO: | Assessment | 3 | Amit | | |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 8.1 LO: | getting started with functions | 3 | Nishanth | | |
-| 8.2 LO: | advanced features of functions | 3 | Punch | Anoop (Pending) | |
-| 8.3 LO: | using python modules | 3 | Anoop | Pending | |
-| 8.4 LO: | writing python scripts | 2 | Nishanth | | |
-| 8.5 LO: | testing and debugging | 2 | Amit | | |
-| 8.6 LO: | Assessment | 3 | Madhu | | |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|