Conditionals LO - script and questions.
--- a/conditionals.rst Wed Oct 13 11:13:46 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-Hello friends. Welcome to this spoken tutorial on Getting started with
-strings.
-
-{{{ Show the slide containing the title }}}
-
-{{{ Show the slide containing the outline }}}
-
-In this tutorial, we will learn the basic conditional constructs
-available in Python. We learn the if/else, if/elif/else and ternary
-conditional constructs available in Python.
-
-{{{ Shift to terminal and start ipython }}}
-
-To begin with let us start ipython, by typing::
-
- ipython
-
-on the terminal
-
-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::
-
- a = 5
-
-In such a case we can write the if/else block as::
-
- if a % 2 == 0:
- print "Even"
- 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 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. 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.
-
-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::
-
- a = -3
-
- if a > 0:
- print "positive"
- elif a < 0:
- print "negative"
- 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.
-
-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.
-
-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
-
-{{{ Show slide for this }}}
-
- if user == 'admin':
- # Do admin operations
- elif user == 'moderator':
- # Do moderator operations
- elif user == 'client':
- # Do customer operations
-
-{{{ end of slide switch to ipython }}}
-
-is completely valid. Note that there are multiple elif blocks and there
-is no else block.
-
-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
-obtained as a string as we read a file. The marks can be in the range
-of 0 to 100 or 'AA' if the student is absent. In such a case to obtain
-the marks as an integer we can use the ternary conditional
-operator. Let us say the string score is stored in score_str
-variable::
-
- score_str = 'AA'
-
-Now let us use the ternary conditional operator::
-
- score = int(score_str) if score_str != 'AA' else 0
-
-This is just the if/else statement block which written in a more
-convenient form and is very helpful when we have only one statement
-for each block. This conditional statement effectively means as we
-would have exactly specified in the English language which will be
-like score is integer of score_str is score_str is not 'AA' otherwise
-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
-otherwise. In such cases "pass" statement comes very handy::
-
- a = raw_input("Enter 'c' to calculate and exit, 'd' to display the existing
- results exit and 'x' to exit and any other key to continue: ")
-
- if a == 'c':
- # Calculate the marks and exit
- elif a == 'd':
- # Display the results and exit
- elif a == 'x':
- # Exit the program
- else:
- pass
-
-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
-implementation for a particular block of code is not known yet but has
-to be filled up later.
-
-{{{ Show summary slide }}}
-
-This brings us to the end of the tutorial session on conditional
-statements in Python. In this tutorial session we learnt
-
- * What are conditional statements
- * if/else statement
- * if/elif/else statement
- * Ternary conditional statement - C if X else Y
- * and the "pass" statement
-
-{{{ Show the "sponsored by FOSSEE" slide }}}
-
-This tutorial was created as a part of FOSSEE project, NME ICT, MHRD India
-
-Hope you have enjoyed and found it useful.
-Thankyou
-
-.. Author : Madhu
- Internal Reviewer 1 : [potential reviewer: Puneeth]
- Internal Reviewer 2 : [potential reviewer: Anoop]
- External Reviewer :
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/conditionals/questions.rst Wed Oct 13 11:14:25 2010 +0530
@@ -0,0 +1,79 @@
+Objective Questions
+-------------------
+
+.. A mininum of 8 questions here (along with answers)
+
+1. Given a variable ``time``, print ``Good Morning`` if it is less
+ than 12, otherwise ``Hello``.
+
+ Answer::
+
+ if time < 12:
+ print "Good Morning"
+
+ else:
+ print "Hello"
+
+#. Every ``if`` block must be followed by an ``else`` block. T or F?
+
+ Answer: F
+
+#. Every ``if/elif/else`` ladder MUST end with an ``else`` block. T/F?
+
+ Answer: F
+
+#. An if/elif/else ladder can have any number of elif blocks. T or F?
+
+ Answer: T
+
+#. What will be printed at the end this code block::
+
+ x = 20
+
+ if x > 10:
+ print x * 100
+
+ Answer: IndentationError - Expected and indented block..
+
+#. What will be printed at the end this code block::
+
+ x = 20
+
+ if x > 10:
+ print x * 100
+ else:
+ print x
+
+ Answer: SyntaxError
+
+#. What will be printed at the end this code block::
+
+ x = 20
+
+ if x > 10:
+ print x * 100
+ else:
+ print x
+
+ Answer: 2000
+
+#. Convert the if else ladder below into a ternary conditional
+ statement::
+
+ x = 20
+
+ if x > 10:
+ print x * 100
+ else:
+ print x
+
+ Answer: print x * 100 if x > 10 else x
+
+
+Larger Questions
+----------------
+
+.. A minimum of 2 questions here (along with answers)
+
+1. Question 1
+2. Question 2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/conditionals/quickref.tex Wed Oct 13 11:14:25 2010 +0530
@@ -0,0 +1,8 @@
+Creating a linear array:\\
+{\ex \lstinline| x = linspace(0, 2*pi, 50)|}
+
+Plotting two variables:\\
+{\ex \lstinline| plot(x, sin(x))|}
+
+Plotting two lists of equal length x, y:\\
+{\ex \lstinline| plot(x, y)|}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/conditionals/script.rst Wed Oct 13 11:14:25 2010 +0530
@@ -0,0 +1,192 @@
+.. Objectives
+.. ----------
+
+.. Clearly state the objectives of the LO (along with RBT level)
+
+.. Prerequisites
+.. -------------
+
+.. 1. Name of LO-1
+.. 2. Name of LO-2
+.. 3. Name of LO-3
+
+.. Author : Madhu
+ Internal Reviewer :
+ External Reviewer :
+ Checklist OK? : <put date stamp here, if OK> [2010-10-05]
+
+
+Script
+------
+
+{{{ Show the slide containing the title }}}
+
+Hello friends. Welcome to this spoken tutorial on Getting started with
+strings.
+
+{{{ Show the slide containing the outline }}}
+
+In this tutorial, we will learn the basic conditional constructs
+available in Python. We learn the if/else, if/elif/else and ternary
+conditional constructs available in Python.
+
+{{{ Shift to terminal and start ipython }}}
+
+To begin with let us start ipython, by typing::
+
+ ipython
+
+on the terminal
+
+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::
+
+ a = 5
+
+In such a case we can write the if/else block as::
+
+ if a % 2 == 0:
+ print "Even"
+ 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 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. 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.
+
+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::
+
+ a = -3
+
+ if a > 0:
+ print "positive"
+ elif a < 0:
+ print "negative"
+ 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.
+
+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.
+
+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
+
+{{{ Show slide for this }}}
+
+ if user == 'admin':
+ # Do admin operations
+ elif user == 'moderator':
+ # Do moderator operations
+ elif user == 'client':
+ # Do customer operations
+
+{{{ end of slide switch to ipython }}}
+
+is completely valid. Note that there are multiple elif blocks and there
+is no else block.
+
+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
+obtained as a string as we read a file. The marks can be in the range
+of 0 to 100 or 'AA' if the student is absent. In such a case to obtain
+the marks as an integer we can use the ternary conditional
+operator. Let us say the string score is stored in score_str
+variable::
+
+ score_str = 'AA'
+
+Now let us use the ternary conditional operator::
+
+ score = int(score_str) if score_str != 'AA' else 0
+
+This is just the if/else statement block which written in a more
+convenient form and is very helpful when we have only one statement
+for each block. This conditional statement effectively means as we
+would have exactly specified in the English language which will be
+like score is integer of score_str is score_str is not 'AA' otherwise
+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
+otherwise. In such cases "pass" statement comes very handy::
+
+ a = raw_input("Enter 'c' to calculate and exit, 'd' to display the existing
+ results exit and 'x' to exit and any other key to continue: ")
+
+ if a == 'c':
+ # Calculate the marks and exit
+ elif a == 'd':
+ # Display the results and exit
+ elif a == 'x':
+ # Exit the program
+ else:
+ pass
+
+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
+implementation for a particular block of code is not known yet but has
+to be filled up later.
+
+{{{ Show summary slide }}}
+
+This brings us to the end of the tutorial session on conditional
+statements in Python. In this tutorial session we learnt
+
+ * What are conditional statements
+ * if/else statement
+ * if/elif/else statement
+ * Ternary conditional statement - C if X else Y
+ * and the "pass" statement
+
+{{{ Show the "sponsored by FOSSEE" slide }}}
+
+This tutorial was created as a part of FOSSEE project, NME ICT, MHRD India
+
+Hope you have enjoyed and found it useful.
+Thank you!
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/conditionals/slides.org Wed Oct 13 11:14:25 2010 +0530
@@ -0,0 +1,123 @@
+#+LaTeX_CLASS: beamer
+#+LaTeX_CLASS_OPTIONS: [presentation]
+#+BEAMER_FRAME_LEVEL: 1
+
+#+BEAMER_HEADER_EXTRA: \usetheme{Warsaw}\usecolortheme{default}\useoutertheme{infolines}\setbeamercovered{transparent}
+#+COLUMNS: %45ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Env Args) %4BEAMER_col(Col) %8BEAMER_extra(Extra)
+#+PROPERTY: BEAMER_col_ALL 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 :ETC
+
+#+LaTeX_CLASS: beamer
+#+LaTeX_CLASS_OPTIONS: [presentation]
+
+#+LaTeX_HEADER: \usepackage[english]{babel} \usepackage{ae,aecompl}
+#+LaTeX_HEADER: \usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet}
+
+#+LaTeX_HEADER: \usepackage{listings}
+
+#+LaTeX_HEADER:\lstset{language=Python, basicstyle=\ttfamily\bfseries,
+#+LaTeX_HEADER: commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen},
+#+LaTeX_HEADER: showstringspaces=false, keywordstyle=\color{blue}\bfseries}
+
+#+TITLE: Accessing parts of arrays
+#+AUTHOR: FOSSEE
+#+EMAIL:
+#+DATE:
+
+#+DESCRIPTION:
+#+KEYWORDS:
+#+LANGUAGE: en
+#+OPTIONS: H:3 num:nil toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
+#+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
+ #+begin_src python
+ In []: C[::3, 1::3]
+ In []: C[::4, 1:4]
+ #+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}{}
+ \begin{center}
+ This spoken tutorial has been produced by the
+ \textcolor{blue}{FOSSEE} team, which is funded by the
+ \end{center}
+ \begin{center}
+ \textcolor{blue}{National Mission on Education through \\
+ Information \& Communication Technology \\
+ MHRD, Govt. of India}.
+ \end{center}
+ \end{block}
+#+end_latex
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/conditionals/slides.tex Wed Oct 13 11:14:25 2010 +0530
@@ -0,0 +1,106 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Tutorial slides on Python.
+%
+% Author: FOSSEE
+% Copyright (c) 2009, FOSSEE, IIT Bombay
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[14pt,compress]{beamer}
+%\documentclass[draft]{beamer}
+%\documentclass[compress,handout]{beamer}
+%\usepackage{pgfpages}
+%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
+
+% Modified from: generic-ornate-15min-45min.de.tex
+\mode<presentation>
+{
+ \usetheme{Warsaw}
+ \useoutertheme{infolines}
+ \setbeamercovered{transparent}
+}
+
+\usepackage[english]{babel}
+\usepackage[latin1]{inputenc}
+%\usepackage{times}
+\usepackage[T1]{fontenc}
+
+\usepackage{ae,aecompl}
+\usepackage{mathpazo,courier,euler}
+\usepackage[scaled=.95]{helvet}
+
+\definecolor{darkgreen}{rgb}{0,0.5,0}
+
+\usepackage{listings}
+\lstset{language=Python,
+ basicstyle=\ttfamily\bfseries,
+ commentstyle=\color{red}\itshape,
+ stringstyle=\color{darkgreen},
+ showstringspaces=false,
+ keywordstyle=\color{blue}\bfseries}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Macros
+\setbeamercolor{emphbar}{bg=blue!20, fg=black}
+\newcommand{\emphbar}[1]
+{\begin{beamercolorbox}[rounded=true]{emphbar}
+ {#1}
+ \end{beamercolorbox}
+}
+\newcounter{time}
+\setcounter{time}{0}
+\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\tiny \thetime\ m}}
+
+\newcommand{\typ}[1]{\lstinline{#1}}
+
+\newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}} }
+
+% Title page
+\title{Your Title Here}
+
+\author[FOSSEE] {FOSSEE}
+
+\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
+\date{}
+
+% DOCUMENT STARTS
+\begin{document}
+
+\begin{frame}
+ \maketitle
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Outline}
+ \begin{itemize}
+ \item
+ \end{itemize}
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% All other slides here. %%
+%% The same slides will be used in a classroom setting. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{frame}[fragile]
+ \frametitle{Summary}
+ \begin{itemize}
+ \item
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Thank you!}
+ \begin{block}{}
+ \begin{center}
+ This spoken tutorial has been produced by the
+ \textcolor{blue}{FOSSEE} team, which is funded by the
+ \end{center}
+ \begin{center}
+ \textcolor{blue}{National Mission on Education through \\
+ Information \& Communication Technology \\
+ MHRD, Govt. of India}.
+ \end{center}
+ \end{block}
+\end{frame}
+
+\end{document}