--- a/day2/session2.tex Fri Dec 10 00:04:46 2010 +0530
+++ b/day2/session2.tex Fri Dec 10 00:04:52 2010 +0530
@@ -51,7 +51,7 @@
\setcounter{time}{0}
\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\tiny \thetime\ m}}
-\newcommand{\typ}[1]{\lstinline{#1}}
+\newcommand{\typ}[1]{\textbf{\texttt{#1}}}
\newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}} }
@@ -78,7 +78,7 @@
\author[FOSSEE Team] {The FOSSEE Group}
\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
-\date[] {1 May, 2010\\Day 2, Session 2}
+\date[] {SciPy.in 2010, Tutorials}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo}
@@ -123,93 +123,6 @@
% You might wish to add the option [pausesections]
\end{frame}
-\section{Control flow}
-\subsection{Basic Looping}
-\begin{frame}[fragile]
- \frametitle{\typ{while}}
-\begin{block}{Example: Fibonacci series}
- Sum of previous two elements defines the next
-\end{block}
- \begin{lstlisting}
-In []: a, b = 0, 1
-In []: while b < 10:
- ...: print b,
- ...: a, b = b, a + b
- ...:
- ...:
-\end{lstlisting}
-\typ{1 1 2 3 5 8}\\
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{\typ{range()}}
-\kwrd{range([start,] stop[, step])}\\
-\begin{itemize}
- \item \typ{range()} returns a list of integers
- \item The \typ{start} and the \typ{step} arguments are optional
- \item \typ{stop} is not included in the list
-\end{itemize}
-\vspace*{.5in}
-\begin{block}{Documentation convention}
- \begin{itemize}
- \item \alert{Anything within \typ{[]} is optional}
- \item Nothing to do with Python.
- \end{itemize}
-\end{block}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{\texttt{for} \ldots \typ{range()}}
-Example: print squares of first \typ{5} numbers
- \begin{lstlisting}
-In []: for i in range(5):
- ....: print i, i * i
- ....:
- ....:
-0 0
-1 1
-2 4
-3 9
-4 16
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{\texttt{for} \ldots \typ{range()}}
-Example: print squares of odd numbers from 3 to 9
- \begin{lstlisting}
-In []: for i in range(3, 10, 2):
- ....: print i, i * i
- ....:
- ....:
-3 9
-5 25
-7 49
-9 81
-\end{lstlisting}
-\inctime{5}
-\end{frame}
-
-\subsection{Exercises}
-
-\begin{frame}{Problem set 1: Problem 1.1}
- Write a program that displays all three digit numbers that are equal to the sum of the cubes of their digits. That is, print numbers $abc$ that have the property $abc = a^3 + b^3 + c^3$\\
-For example, $153 = 1^3 + 5^3 + 3^3$\\
-\vspace*{0.2in}
-\emphbar{These are called $Armstrong$ numbers.}
-\end{frame}
-
-\begin{frame}{Problem 1.2 - Collatz sequence}
-\begin{enumerate}
- \item Start with an arbitrary (positive) integer.
- \item If the number is even, divide by 2; if the number is odd, multiply by 3 and add 1.
- \item Repeat the procedure with the new number.
- \item It appears that for all starting values there is a cycle of 4, 2, 1 at which the procedure loops.
-\end{enumerate}
- Write a program that accepts the starting value and prints out the Collatz sequence.
-\inctime{5}
-\end{frame}
-
\section{Data structures}
\subsection{Lists}
\begin{frame}[fragile]
@@ -256,42 +169,6 @@
\end{frame}
\begin{frame}[fragile]
- \frametitle{Lists: slicing}
- \begin{itemize}
- \item \typ{list[initial:final]}
- \end{itemize}
-\begin{lstlisting}
-In []: a = [1, 2, 3, 4, 5]
-
-In []: a[1:3]
-Out[]: [2, 3]
-
-In []: a[1:-1]
-Out[]: [2, 3, 4]
-
-In []: a[:3]
-Out[]: [1, 2, 3]
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Lists: slicing}
- \begin{itemize}
- \item \typ{list[initial:final:step]}
- \end{itemize}
-\begin{lstlisting}
-In []: a[1:-1:2]
-Out[]: [2, 4]
-
-In []: a[::2]
-Out[]: [1, 3, 5]
-
-In []: a[::-1]
-Out[]: [5, 4, 3, 2, 1]
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
\frametitle{List containership}
\emphbar{Recall \typ{num} is \typ{[9, 8, 2, 3, 7]}}
\begin{lstlisting}
@@ -324,7 +201,7 @@
\item Tuples are immutable - cannot be changed
\end{itemize}
\end{block}
- \inctime{10}
+
\end{frame}
\begin{frame}
@@ -341,28 +218,82 @@
\end{frame}
\subsection{Dictionaries}
+
\begin{frame}[fragile]
- \frametitle{Dictionaries: recall}
+ \frametitle{Dictionaries: Introduction}
+ \begin{itemize}
+ \item Lists index using integers\\
+Recall \typ{p = [2, 3, 5, 7]} and\\
+\typ{p[1]} is equal to \typ{3}
+ \item Dictionaries index using strings
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Dictionaries \ldots}
\begin{lstlisting}
-In []: player = {'Mat': 134,'Inn': 233,
- 'Runs': 10823, 'Avg': 52.53}
+In []: d = {'png' : 'image file',
+ 'txt' : 'text file',
+ 'py' : 'python code',
+ 'java': 'bad code',
+ 'cpp': 'complex code'}
+
+In []: d['txt']
+Out[]: 'text file'
+ \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Dictionaries \ldots}
+ \begin{lstlisting}
+In []: 'py' in d
+Out[]: True
-In []: player['Avg']
-Out[]: 52.530000000000001
+In []: 'jpg' in d
+Out[]: False
\end{lstlisting}
- \begin{block}{Note!}
- Duplicate keys $\Rightarrow$ overwritten!\\
- You can iterate through a dictionary using keys.
- \end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Dictionaries \ldots}
+ \begin{small}
+ \begin{lstlisting}
+In []: d.keys()
+Out[]: ['cpp', 'py', 'txt', 'java', 'png']
+
+In []: d.values()
+Out[]: ['complex code', 'python code',
+ 'text file', 'bad code',
+ 'image file']
+ \end{lstlisting}
+ \end{small}
+%% \inctime{10}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Inserting elements into dictionary}
+ \emphbar{\alert{\typ{d[key] = value}}}
+ \begin{lstlisting}
+In []: d['bin'] = 'binary file'
+In []: d
+Out[]:
+{'bin': 'binary file',
+ 'cpp': 'complex code',
+ 'java': 'bad code',
+ 'png': 'image file',
+ 'py': 'python code',
+ 'txt': 'text file'}
+ \end{lstlisting}
+ \emphbar{\alert{Duplicate keys are overwritten!}}
\end{frame}
\begin{frame}[fragile]
\frametitle{Dictionaries: containership}
\begin{lstlisting}
-In []: 'Inn' in player
+In []: 'bin' in d
Out[]: True
-In []: 'Econ' in player
+In []: 'hs' in d
Out[]: False
\end{lstlisting}
\begin{block}{Note}
@@ -376,12 +307,17 @@
\begin{frame}[fragile]
\frametitle{Dictionaries: methods}
\begin{lstlisting}
-In []: player.keys()
-Out[]: ['Runs', 'Inn', 'Avg', 'Mat']
+In []: d.keys()
+Out[]: ['bin', 'java', 'py', 'cpp', 'txt', 'png']
-In []: player.values()
-Out[]: [10823, 233,
- 52.530000000000001, 134]
+In []: d.values()
+Out[]:
+['binary file',
+ 'bad code',
+ 'python code',
+ 'complex code',
+ 'text file',
+ 'image file']
\end{lstlisting}
\end{frame}
@@ -454,79 +390,9 @@
\end{frame}
-\section{Functions}
-\begin{frame}[fragile]
- \frametitle{Functions}
- \begin{itemize}
- \item \kwrd{def} - keyword to define a function
- \item Arguments are local to a function
- \item Functions can return multiple values
- \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Functions: example}
- \begin{lstlisting}
-def signum( r ):
- """returns 0 if r is zero
- -1 if r is negative
- +1 if r is positive"""
- if r < 0:
- return -1
- elif r > 0:
- return 1
- else:
- return 0
- \end{lstlisting}
- \emphbar{Note docstrings}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle {What does this function do?}
- \begin{lstlisting}
-def what( n ):
- if n < 0: n = -n
- while n > 0:
- if n % 2 == 1:
- return False
- n /= 10
- return True
- \end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- {What does this function do?}
-\begin{lstlisting}
-def what( n ):
- i = 1
- while i * i < n:
- i += 1
- return i * i == n, i
- \end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle {What does this function do?}
- \begin{lstlisting}
-def what( x, n ):
- if n < 0:
- n = -n
- x = 1.0 / x
-
- z = 1.0
- while n > 0:
- if n % 2 == 1:
- z *= x
- x *= x
- n /= 2
- return z
- \end{lstlisting}
-\end{frame}
-
\begin{frame}
\frametitle{What did we learn?}
\begin{itemize}
- \item Loops: \kwrd{while}, \kwrd{for}
\item Advanced Data structures:
\begin{itemize}
\item Lists
@@ -534,8 +400,6 @@
\item Dictionaries
\item Sets
\end{itemize}
- \item Functions
- \item Docstrings
\end{itemize}
\end{frame}