diff options
Diffstat (limited to 'day1/session2.tex')
-rw-r--r-- | day1/session2.tex | 369 |
1 files changed, 369 insertions, 0 deletions
diff --git a/day1/session2.tex b/day1/session2.tex new file mode 100644 index 0000000..be8ba73 --- /dev/null +++ b/day1/session2.tex @@ -0,0 +1,369 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Tutorial slides on Python. +% +% Author: The FOSSEE Group +% Copyright (c) 2009, The FOSSEE Group, 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{split} + \setbeamercovered{transparent} +} + +\usepackage[english]{babel} +\usepackage[latin1]{inputenc} +%\usepackage{times} +\usepackage[T1]{fontenc} + +% Taken from Fernando's slides. +\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]{\texttt{#1}} + +\newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}} } + +%%% This is from Fernando's setup. +% \usepackage{color} +% \definecolor{orange}{cmyk}{0,0.4,0.8,0.2} +% % Use and configure listings package for nicely formatted code +% \usepackage{listings} +% \lstset{ +% language=Python, +% basicstyle=\small\ttfamily, +% commentstyle=\ttfamily\color{blue}, +% stringstyle=\ttfamily\color{orange}, +% showstringspaces=false, +% breaklines=true, +% postbreak = \space\dots +% } + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Title page +\title[Basic Python]{Python:\\A great programming toolkit} + +\author[FOSEE Team] {The FOSSEE Group} + +\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} +\date[] {31, October 2009\\Day 1, Session 2} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo} +%\logo{\pgfuseimage{iitmlogo}} + + +%% Delete this, if you do not want the table of contents to pop up at +%% the beginning of each subsection: +\AtBeginSubsection[] +{ + \begin{frame}<beamer> + \frametitle{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} + +\AtBeginSection[] +{ + \begin{frame}<beamer> + \frametitle{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} + +% If you wish to uncover everything in a step-wise fashion, uncomment +% the following command: +%\beamerdefaultoverlayspecification{<+->} + +%\includeonlyframes{current,current1,current2,current3,current4,current5,current6} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% DOCUMENT STARTS +\begin{document} + +\begin{frame} + \titlepage +\end{frame} +\begin{frame} + {Acknowledgements} + \begin{center} + This program is conducted by\\ + IIT, Bombay\\ + as part of the open source initiatives\\ + under the aegis of\\ + \alert{National Mission on Education through ICT,} \\ + Ministry of HRD. + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Outline} + \tableofcontents + % You might wish to add the option [pausesections] +\end{frame} + +\section{Functions} +\begin{frame}{Functions: Definition} +\begin{itemize} + \item \kwrd{def} keyword +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Functions: Example 1} + \begin{lstlisting} +In [1]: def plot_sinx(): + ....: x = linspace(0, 2*pi, 100) + ....: plt.plot(x, sin(x)) + ....: plt.show() + ....: + +In [2]: plot_sinx() + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Functions: Example 2} + \begin{lstlisting} +In [3]: def f(x): + ....: return sin(x*x*x)+(3*x*x) + +In [4]: x = linspace(0,2*pi, 1000) + +In [5]: plt.plot(x, f(x)) + \end{lstlisting} + \inctime{10} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% TIME: 10 m, running +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Creating and running scripts} +\begin{frame} + {Creating python files} + \begin{itemize} + \item aka scripts + \item use your editor + \item extension \typ{.py} + \item run with \texttt{python hello.py} at the command line + \item in IPython using \kwrd{\%run} + \end{itemize} +\inctime{5} +\end{frame} + +\section{Files Handling} +\begin{frame}[fragile] + \frametitle{Basic File Operations} +Opening and Reading files +\begin{lstlisting} +In [6]: f = open('/path/to/file_name') +In [7]: data = f.read() # Read entire file. +In [8]: line = f.readline() # Read one line. +In [9]: f.close() # close the file. +\end{lstlisting} +Writing files +\begin{lstlisting} +In [10]: f = open('/path/to/file_name', 'w') +In [11]: f.write('hello world\n') +In [12]: f.close() +\end{lstlisting} +\begin{itemize} + \item Everything read or written is a string +\end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{File and \kwrd{for}} +\begin{lstlisting} +In [13]: f = open('dummyfile') + +In [14]: for line in f: + ...: print line + ...: +\end{lstlisting} +\inctime{10} +\end{frame} + +\section{Strings} +\begin{frame}[fragile] + \frametitle{Strings} + \begin{lstlisting} +s = 'this is a string' +s = 'This one has "quotes" inside!' +s = "I have 'single-quotes' inside!" +l = "A string spanning many lines\ +one more line\ +yet another" +t = """A triple quoted string does +not need to be escaped at the end and +"can have nested quotes" etc.""" + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]\frametitle{Strings and \typ{split()}} + \begin{lstlisting} +In [15]: a = 'hello world' + +In [16]: a.split() +Out[17]: ['hello', 'world'] + \end{lstlisting} +Now try this: + \begin{lstlisting} +In [18]: b = 'KD, Madhu, Punchagan, Shantanu, Vattam' + +In [19]: b.split(',') +Out[20]: ['KD', ' Madhu', ' Punchagan', ' Shantanu', ' Vattam'] + \end{lstlisting} +\inctime{5} +\end{frame} + +\section{Plotting points} +\begin{frame}[fragile] +\frametitle{How to plot points?} +We saw how to plot graphs, lets now look at how to plot points.\\ +\begin{lstlisting} +In [21]: plt.plot(x, sin(x), 'ro') +Out[22]: [<matplotlib.lines.Line2D object at 0xac17e0c>] +\end{lstlisting} +\begin{itemize} + \item \kwrd{'r'},\kwrd{'g'},\kwrd{'b'} for red, green and blue + \item \kwrd{'o'} - Dots + \item \kwrd{'-'} - Lines + \item \kwrd{'- -'} - Dashed lines +\end{itemize} +\inctime{5} +\end{frame} + +\section{Lists} + +\begin{frame}[fragile] + \frametitle{List creation and indexing} +\begin{lstlisting} +In [23]: lst = [] #Empty list + +In [24]: lst = [1,2,3,4] #More useful list + +In [25]: len(lst) +Out[26]: 4 + +In [27]: lst[0]+lst[1]+lst[-1] +Out[27]: 7 +\end{lstlisting} +\begin{itemize} + \item Indices start with ? + \item Negative indices indicate ? + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{List: slices} + \begin{itemize} + \item Slicing is a basic operation + \item \typ{list[initial:final:step]} + \item The step is optional + \end{itemize} +\begin{lstlisting} +In [28]: lst[1:3] # A slice. +Out[28]: [2, 3] + +In [29]: lst[1:-1] +Out[29]: [2, 3] + +In [30]: lst[1:] == lst[1:-1] +Out[30]: False +\end{lstlisting} +Explain last result +\end{frame} + +\begin{frame}[fragile] + \frametitle{List: more slices} +\begin{lstlisting} +In [31]: lst[0:-1:2] # Notice the step! +Out[31]: [1, 3] + +In [31]: lst[::2] +Out[31]: [1, 3] + +In [32]: lst[-1::-1] +\end{lstlisting} +What do you think the last one will do? +\end{frame} + +\begin{frame}[fragile] + \frametitle{List methods} +\begin{lstlisting} +In [33]: lst.append(5) + +In [34]: lst +Out[34]: [1, 2, 3, 4, 5] + +In [35]: lst.append([6,7]) + +In [36]: lst +Out[36]: [1, 2, 3, 4, 5, [6, 7]] + +In [37]: lst.extend([8,9]) + +In [38]: lst +Out[38]: [1, 2, 3, 4, 5, [6, 7], 8, 9] +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{List containership} + \begin{lstlisting} +In [39]: animals = ['cat', 'dog', 'rat', 'croc'] + +In [40]: 'dog' in animals +Out[40]: True + +In [41]: 'snake' in animals +Out[41]: False + \end{lstlisting} + \inctime{10} +\end{frame} + +\section{Modules and import} +\begin{frame}{Modules and \typ{import}} + \begin{itemize} + \item \kwrd{import} x + \item \kwrd{from} x \kwrd{import} y + \end{itemize} +Whats the difference?? +\inctime{5} +\end{frame} + +\end{document} |