# HG changeset patch # User Puneeth Chaganti # Date 1255498338 -19800 # Node ID ae070c1331201d878e767e794fd8a8d3f9ec98de # Parent 220ac08e67b5eef39705a6f3322adbf2fb22c25f# Parent 16e04782baace539db385cde84f5bdc338a11cbe Merged with mainline. diff -r 220ac08e67b5 -r ae070c133120 day1/Session-2.tex --- a/day1/Session-2.tex Tue Oct 13 22:34:46 2009 +0530 +++ b/day1/Session-2.tex Wed Oct 14 11:02:18 2009 +0530 @@ -159,32 +159,23 @@ \section{Functions} \subsection{Defining} \begin{frame}[fragile] -\frametitle{Functions: examples} - \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} +\frametitle{Functions: Definition} +\begin{itemize} + \item \kwrd{def} keyword + \item +\end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Functions: examples} \begin{lstlisting} -def pad( n, size ): - """pads integer n with spaces - into a string of length size - """ - SPACE = ' ' - s = str( n ) - padSize = size - len( s ) - return padSize * SPACE + s +In [35]: def plot_sinx(): + ....: x = linspace(0, 2*pi, 100) + ....: plt.plot(x, sin(x)) + ....: plt.show() + ....: + +In [36]: plot_sinx() \end{lstlisting} \pause \emphbar{What about \% formatting?} diff -r 220ac08e67b5 -r ae070c133120 day1/session2.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/day1/session2.tex Wed Oct 14 11:02:18 2009 +0530 @@ -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 +{ + \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} + \frametitle{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} + +\AtBeginSection[] +{ + \begin{frame} + \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]: [] +\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}