# HG changeset patch # User Amit Sethi # Date 1289390118 -19800 # Node ID 79a7ca3073d4bd51addb4f889ed001213255d8d1 # Parent a9b71932cbfaf8d1aea641feb24163dde9feb2bf# Parent b2e8522839f00b7c2e3debae667e2e1d7648f651 Merging heads diff -r a9b71932cbfa -r 79a7ca3073d4 conditionals/questions.rst --- a/conditionals/questions.rst Wed Nov 10 17:19:54 2010 +0530 +++ b/conditionals/questions.rst Wed Nov 10 17:25:18 2010 +0530 @@ -75,5 +75,27 @@ .. A minimum of 2 questions here (along with answers) -1. Question 1 -2. Question 2 +1. Given a number, say, n. If it is divisible by 10, print the + quotient when divided by 10, otherwise if it is divisible by 5, + print the corresponding quotient, otherwise, print the number. + + + Answer:: + + if n%10==0: + print n/10 + elif n%5==0: + print n/5 + else: + print n + +2. Given a number, say, n. Write an if block to multiply n by three + and add 1, if it is odd, otherwise halve it. + + Answer:: + + if n % 2: + n = n*3+1 + else: + n /= 2 + diff -r a9b71932cbfa -r 79a7ca3073d4 conditionals/quickref.tex --- a/conditionals/quickref.tex Wed Nov 10 17:19:54 2010 +0530 +++ b/conditionals/quickref.tex Wed Nov 10 17:25:18 2010 +0530 @@ -1,8 +1,12 @@ -Creating a linear array:\\ -{\ex \lstinline| x = linspace(0, 2*pi, 50)|} +Writing an if/elif/else block: +\begin{lstlisting} +if condition1: + # do A, B, C +elif condition2: + # do D, E +else: + # do Y, Z +\end{lstlisting} -Plotting two variables:\\ -{\ex \lstinline| plot(x, sin(x))|} - -Plotting two lists of equal length x, y:\\ -{\ex \lstinline| plot(x, y)|} +The ternary operator: +{\ex \lstinline| C if X else Y|} -- Do C if X is True else do Y. diff -r a9b71932cbfa -r 79a7ca3073d4 conditionals/script.rst --- a/conditionals/script.rst Wed Nov 10 17:19:54 2010 +0530 +++ b/conditionals/script.rst Wed Nov 10 17:25:18 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,21 @@ is completely valid. Note that there are multiple elif blocks and there is no else block. +Following is an exercise that you must do. + +%% %% Given a number, num. Write an if else block to print num, as is, + if it is divisible by 10, else print 10 * num. + +Please, pause the video here. Do the exercise and then continue. + +:: + + if num%10 == 0: + print num + else: + print 10*num + + 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 +162,21 @@ 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. + +%% %% Given a number, num. Write a ternary operator to print num, as is, + if it is divisible by 10, else print 10 * num. + +Please, pause the video here. Do the exercise and then continue. + +:: + + print num if num%10 == 0 else 10*num + +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 +193,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. diff -r a9b71932cbfa -r 79a7ca3073d4 conditionals/slides.org --- a/conditionals/slides.org Wed Nov 10 17:19:54 2010 +0530 +++ b/conditionals/slides.org Wed Nov 10 17:25:18 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,47 @@ #+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 + In this tutorial, we shall look at + + Using if/else blocks + + Using if/elif/else blocks + + Using the Ternary conditional statement + * Question 1 - Change the last column of ~C~ to zeroes. + Given a number, num. Write an if else block to print num, as is, if + it is divisible by 10, else print 10 * num. * Solution 1 #+begin_src python - In []: C[:, -1] = 0 + if num%10 == 0: + print num + else: + print 10*num + #+end_src + +* ~if/elif~ ladder + #+begin_src python + if user == 'admin': + # Do admin operations + elif user == 'moderator': + # Do moderator operations + elif user == 'client': + # Do customer operations #+end_src * Question 2 - Change ~A~ to ~[11, 12, 13, 14, 15]~. + Given a number, num. Write a ternary operator to print num, as is, + if it is divisible by 10, else print 10 * num. * 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] + print num if num%10 == 0 else 10*num #+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. + 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 + * Thank you! #+begin_latex \begin{block}{} diff -r a9b71932cbfa -r 79a7ca3073d4 conditionals/slides.tex --- a/conditionals/slides.tex Wed Nov 10 17:19:54 2010 +0530 +++ b/conditionals/slides.tex Wed Nov 10 17:25:18 2010 +0530 @@ -1,95 +1,123 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%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 -{ - \usetheme{Warsaw} - \useoutertheme{infolines} - \setbeamercovered{transparent} -} - -\usepackage[english]{babel} +% Created 2010-11-10 Wed 13:25 +\documentclass[presentation]{beamer} \usepackage[latin1]{inputenc} -%\usepackage{times} \usepackage[T1]{fontenc} - -\usepackage{ae,aecompl} -\usepackage{mathpazo,courier,euler} -\usepackage[scaled=.95]{helvet} +\usepackage{fixltx2e} +\usepackage{graphicx} +\usepackage{longtable} +\usepackage{float} +\usepackage{wrapfig} +\usepackage{soul} +\usepackage{textcomp} +\usepackage{marvosym} +\usepackage{wasysym} +\usepackage{latexsym} +\usepackage{amssymb} +\usepackage{hyperref} +\tolerance=1000 +\usepackage[english]{babel} \usepackage{ae,aecompl} +\usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet} +\usepackage{listings} +\lstset{language=Python, basicstyle=\ttfamily\bfseries, +commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen}, +showstringspaces=false, keywordstyle=\color{blue}\bfseries} +\providecommand{\alert}[1]{\textbf{#1}} -\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} +\title{Conditionals} +\author{FOSSEE} \date{} -% DOCUMENT STARTS +\usetheme{Warsaw}\usecolortheme{default}\useoutertheme{infolines}\setbeamercovered{transparent} \begin{document} +\maketitle + + + + + + + + + \begin{frame} - \maketitle +\frametitle{Outline} +\label{sec-1} + + In this tutorial, we shall look at +\begin{itemize} +\item Using if/else blocks +\item Using if/elif/else blocks +\item Using the Ternary conditional statement +\end{itemize} \end{frame} +\begin{frame} +\frametitle{Question 1} +\label{sec-2} + Given a number, num. Write an if else block to print num, as is, if + it is divisible by 10, else print 10 * num. +\end{frame} \begin{frame}[fragile] - \frametitle{Outline} - \begin{itemize} - \item - \end{itemize} +\frametitle{Solution 1} +\label{sec-3} + +\lstset{language=Python} +\begin{lstlisting} +if num%10 == 0: + print num +else: + print 10*num +\end{lstlisting} \end{frame} +\begin{frame}[fragile] +\frametitle{\texttt{if/elif} ladder} +\label{sec-4} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% All other slides here. %% -%% The same slides will be used in a classroom setting. %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\lstset{language=Python} +\begin{lstlisting} +if user == 'admin': + # Do admin operations +elif user == 'moderator': + # Do moderator operations +elif user == 'client': + # Do customer operations +\end{lstlisting} +\end{frame} +\begin{frame} +\frametitle{Question 2} +\label{sec-5} + Given a number, num. Write a ternary operator to print num, as is, + if it is divisible by 10, else print 10 * num. +\end{frame} \begin{frame}[fragile] - \frametitle{Summary} - \begin{itemize} - \item - \end{itemize} +\frametitle{Solution 2} +\label{sec-6} + +\lstset{language=Python} +\begin{lstlisting} +print num if num%10 == 0 else 10*num +\end{lstlisting} \end{frame} - \begin{frame} - \frametitle{Thank you!} +\frametitle{Summary} +\label{sec-7} + + In this tutorial session we learnt + +\begin{itemize} +\item What are conditional statements +\item if/else statement +\item if/elif/else statement +\item Ternary conditional statement - \texttt{C if X else Y} +\item and the \texttt{pass} statement +\end{itemize} +\end{frame} +\begin{frame} +\frametitle{Thank you!} +\label{sec-8} + \begin{block}{} \begin{center} This spoken tutorial has been produced by the diff -r a9b71932cbfa -r 79a7ca3073d4 getting-started-strings/quickref.tex --- a/getting-started-strings/quickref.tex Wed Nov 10 17:19:54 2010 +0530 +++ b/getting-started-strings/quickref.tex Wed Nov 10 17:25:18 2010 +0530 @@ -1,8 +1,8 @@ -Creating a linear array:\\ -{\ex \lstinline| x = linspace(0, 2*pi, 50)|} +Creating a string:\\ +{\ex \lstinline| s = ``Hello World''|} -- Single quotes and triple +quotes can also be used. -Plotting two variables:\\ -{\ex \lstinline| plot(x, sin(x))|} +Accessing individual elements:\\ +{\ex \lstinline| s[5]|} -- Elements can be accessed with their index -Plotting two lists of equal length x, y:\\ -{\ex \lstinline| plot(x, y)|} +Strings are immutable. diff -r a9b71932cbfa -r 79a7ca3073d4 getting-started-strings/script.rst --- a/getting-started-strings/script.rst Wed Nov 10 17:19:54 2010 +0530 +++ b/getting-started-strings/script.rst Wed Nov 10 17:25:18 2010 +0530 @@ -30,9 +30,9 @@ {{{ Show the slide containing the outline }}} -In this tutorial, we will learn what do we actually mean by strings in -python, how python supports the use of strings. We will also learn -some of the operations that can be performed on strings. +In this tutorial, we will look at what we really mean by strings, how +python supports the use of strings and some of the operations that can +be performed on strings. {{{ Shift to terminal and start ipython }}} @@ -42,10 +42,9 @@ on the terminal -So what are strings? In Python anything within either single quotes +So, what are strings? In Python anything within either single quotes or double quotes or triple single quotes or triple double quotes are -strings. This is true whatsoever, even if there is only one character -within the quotes +strings. {{{ Type in ipython the following and read them as you type }}}:: @@ -54,19 +53,21 @@ '''This is a string as well''' """This is also a string""" 'p' + "" -Having more than one control character to define strings come as very -handy when one of the control characters itself is part of the -string. For example:: +Note that it really doesn't matter how many characters are present in +the string. The last example is a null string or an empty string. + +Having more than one control character to define strings is handy when +one of the control characters itself is part of the string. For +example:: "Python's string manipulation functions are very useful" -In this case we use single quote for apostrophe. If we had only single -quote to define strings we should have a clumsy way of escaping the -single quote character to make it part of the string. Hence this is a -very handy feature. +By having multiple control characters, we avoid the need for +escaping characters -- in this case the apostrophe. -The triple quoted strings let us define multi-lines strings without +The triple quoted strings let us define multi-line strings without using any escaping. Everything within the triple quotes is a single string no matter how many lines it extends:: @@ -99,19 +100,63 @@ gives another string in which the original string 'Hello' is repeated 5 times. -Since strings are collections we can access individual items in the -string using the subscripts:: +Following is an exercise that you must do. + +%% %% Obtain the string ``%% -------------------- %%`` (20 hyphens) + without typing out all the twenty hyphens. + +Please, pause the video here. Do the exercise and then continue. + +:: + + s = "%% " + "-"*20 + " %%" + +Let's now look at accessing individual elements of strings. Since, +strings are collections we can access individual items in the string +using the subscripts:: a[0] gives us the first character in the string. The indexing starts from 0 -for the first character up to n-1 for the last character. We can -access the strings from the end using negative indices:: +for the first character and goes up to n-1 for the last character. We +can access the strings from the end using negative indices:: + + a[-1] - a[-2] +gives us the last element of the string and +:: + + a[-2] gives us second element from the end of the string +Following is an exercise that you must do. + +%% %% Given a string, ``s = "Hello World"``, what is the output of:: + + s[-5] + s[-10] + s[-15] + +Please, pause the video here. Do the exercise and then continue. + +:: + + s[-5] + +gives us 'W' +:: + + s[-10] + +gives us 'e' and +:: + + s[-15] + +gives us an ``IndexError``, as should be expected, since the string +given to us is only 11 characters long. + Let us attempt to change one of the characters in a string:: a = 'hello' @@ -132,7 +177,7 @@ * How to define strings * Different ways of defining a string - * String concatenation and repeatition + * String concatenation and repetition * Accessing individual elements of the string * Immutability of strings diff -r a9b71932cbfa -r 79a7ca3073d4 getting-started-strings/slides.org --- a/getting-started-strings/slides.org Wed Nov 10 17:19:54 2010 +0530 +++ b/getting-started-strings/slides.org Wed Nov 10 17:25:18 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: #+AUTHOR: FOSSEE #+EMAIL: #+DATE: @@ -30,81 +30,38 @@ #+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 +*** Defining strings +*** Concatenation +*** Accessing individual elements +*** Immutability of strings * Question 1 - Change the last column of ~C~ to zeroes. + Obtain the string ~%% -------------------- %%~ (20 hyphens) without + typing out all the twenty hyphens. * Solution 1 #+begin_src python - In []: C[:, -1] = 0 + s = "%% " + "-"*20 + " %%" #+end_src * Question 2 - Change ~A~ to ~[11, 12, 13, 14, 15]~. + Given a string, ~s~ which is ~Hello World~ , what is the output of:: + #+begin_src python + s[-5] + s[-10] + s[-15] + #+end_src * 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] + 'W' + 'e' + IndexError #+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. + In this tutorial we have learnt + + How to define strings + + Different ways of defining a string + + String concatenation and repetition + + Accessing individual elements of the string + + Immutability of strings + * Thank you! #+begin_latex \begin{block}{} diff -r a9b71932cbfa -r 79a7ca3073d4 getting-started-strings/slides.tex --- a/getting-started-strings/slides.tex Wed Nov 10 17:19:54 2010 +0530 +++ b/getting-started-strings/slides.tex Wed Nov 10 17:25:18 2010 +0530 @@ -1,95 +1,118 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%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 -{ - \usetheme{Warsaw} - \useoutertheme{infolines} - \setbeamercovered{transparent} -} - -\usepackage[english]{babel} +% Created 2010-11-10 Wed 10:46 +\documentclass[presentation]{beamer} \usepackage[latin1]{inputenc} -%\usepackage{times} \usepackage[T1]{fontenc} - -\usepackage{ae,aecompl} -\usepackage{mathpazo,courier,euler} -\usepackage[scaled=.95]{helvet} +\usepackage{fixltx2e} +\usepackage{graphicx} +\usepackage{longtable} +\usepackage{float} +\usepackage{wrapfig} +\usepackage{soul} +\usepackage{textcomp} +\usepackage{marvosym} +\usepackage{wasysym} +\usepackage{latexsym} +\usepackage{amssymb} +\usepackage{hyperref} +\tolerance=1000 +\usepackage[english]{babel} \usepackage{ae,aecompl} +\usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet} +\usepackage{listings} +\lstset{language=Python, basicstyle=\ttfamily\bfseries, +commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen}, +showstringspaces=false, keywordstyle=\color{blue}\bfseries} +\providecommand{\alert}[1]{\textbf{#1}} -\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} +\title{} +\author{FOSSEE} \date{} -% DOCUMENT STARTS +\usetheme{Warsaw}\usecolortheme{default}\useoutertheme{infolines}\setbeamercovered{transparent} \begin{document} + + + + + + + + + + \begin{frame} - \maketitle +\frametitle{Outline} +\label{sec-1} +\begin{itemize} + +\item Defining strings\\ +\label{sec-1_1}% +\item Concatenation\\ +\label{sec-1_2}% +\item Accessing individual elements\\ +\label{sec-1_3}% +\item Immutability of strings\\ +\label{sec-1_4}% +\end{itemize} % ends low level \end{frame} +\begin{frame} +\frametitle{Question 1} +\label{sec-2} + Obtain the string \texttt{\%\% -------------------- \%\%} (20 hyphens) without + typing out all the twenty hyphens. +\end{frame} \begin{frame}[fragile] - \frametitle{Outline} - \begin{itemize} - \item - \end{itemize} +\frametitle{Solution 1} +\label{sec-3} + +\lstset{language=Python} +\begin{lstlisting} +s = "%% " + "-"*20 + " %%" +\end{lstlisting} \end{frame} +\begin{frame}[fragile] +\frametitle{Question 2} +\label{sec-4} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% All other slides here. %% -%% The same slides will be used in a classroom setting. %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - + Given a string, \texttt{s} which is \texttt{Hello World} , what is the output of:: +\lstset{language=Python} +\begin{lstlisting} +s[-5] +s[-10] +s[-15] +\end{lstlisting} +\end{frame} \begin{frame}[fragile] - \frametitle{Summary} - \begin{itemize} - \item - \end{itemize} +\frametitle{Solution 2} +\label{sec-5} + +\lstset{language=Python} +\begin{lstlisting} +'W' +'e' +IndexError +\end{lstlisting} \end{frame} - \begin{frame} - \frametitle{Thank you!} +\frametitle{Summary} +\label{sec-6} + + In this tutorial we have learnt +\begin{itemize} +\item How to define strings +\item Different ways of defining a string +\item String concatenation and repetition +\item Accessing individual elements of the string +\item Immutability of strings +\end{itemize} + + +\end{frame} +\begin{frame} +\frametitle{Thank you!} +\label{sec-7} + \begin{block}{} \begin{center} This spoken tutorial has been produced by the diff -r a9b71932cbfa -r 79a7ca3073d4 progress.org --- a/progress.org Wed Nov 10 17:19:54 2010 +0530 +++ b/progress.org Wed Nov 10 17:25:18 2010 +0530 @@ -15,7 +15,7 @@ |---------+----------------------------------------+-------+----------+-----------------+-----------| | 3.1 LO: | getting started with lists | 2 | Amit | Anoop(Done) | | | 3.2 LO: | getting started with =for= | 2 | Anoop | Nishanth (Done) | | -| 3.3 LO: | getting started with strings | 2 | Madhu | | | +| 3.3 LO: | getting started with strings | 2 | Madhu | Punch (Done) | | | 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 | Punch (Done) | | @@ -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 | | | |---------+----------------------------------------+-------+----------+-----------------+-----------| diff -r a9b71932cbfa -r 79a7ca3073d4 progress.org.orig --- a/progress.org.orig Wed Nov 10 17:19:54 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 | | | -|---------+----------------------------------------+-------+----------+---------------------------------------+-----------| diff -r a9b71932cbfa -r 79a7ca3073d4 using python modules/script.rst --- a/using python modules/script.rst Wed Nov 10 17:19:54 2010 +0530 +++ b/using python modules/script.rst Wed Nov 10 17:25:18 2010 +0530 @@ -28,15 +28,13 @@ ==================== {{{ show the welcome slide }}} -Welcome to the spoken tutorial on using python modules. +Welcome to the spoken tutorial on Using Python Modules. {{{ switch to next slide, outline slide }}} In this tutorial, we will see how to run python scripts from command -line. See importing modules, importing scipy and pylab modules. And -also see the Python standard library. - -.. #[Punch: the sentence seems discontinuous.] +line. We'll see how to import modules, importing scipy and pylab +modules and have a look at the Python standard library. {{{ switch to next slide on executing python scripts from command line }}} @@ -49,7 +47,7 @@ print "Hello world!" print -and save the script as hello.py, +and save the script as ``hello.py``, {{{ save the script as hello.py }}} @@ -187,7 +185,7 @@ {{{ switch to next slide, problem statement }}} -Write a script to plot a sine wave from minus two pi to two pi. +%% %% Write a script to plot a sine wave from minus two pi to two pi. Pause here and try to solve the problem yourself before looking at the solution. @@ -234,8 +232,8 @@ Find more information at Python Library reference, ``http://docs.python.org/library/`` -The modules pylab, scipy, Mayavi are not part of the standard python -library. +There are a lot of other modules like pylab, scipy, Mayavi, etc which +are not part of the standard python library. {{{ switch to next slide, summary }}}