#+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: Getting started with functions #+AUTHOR: FOSSEE #+EMAIL: info@fossee.in #+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. * Outline - Define functions - Pass arguments to functions - Learn about docstrings - Return values from functions * Function - Eliminate code redundancy - Help in code reuse - Subroutine - relatively independent of remaining code * ~f(x)~ a mathematical function $f(x) = x^{2}$ : f(1) -> 1 : f(2) -> 4 * Define ~f(x)~ in Python #+begin_src python def f(x): return x*x #+end_src - ~def~ - keyword - ~f~ - function name - ~x~ - parameter / argument to function ~f~ * Exercise 1 Write a python function named ~cube~ which computes the cube of a given number ~n~. - Pause here and try to solve the problem yourself. * Solution #+begin_src python def cube(n): return n**3 #+end_src * ~greet~ function Function ~greet~ which will print ~Hello World!~. #+begin_src python def greet(): print "Hello World!" #+end_src - Call the function ~greet~ : In []: greet() : Hello World! * Exercise 2 Write a python function named ~avg~ which computes the average of ~a~ and ~b~. - Pause here and try to solve the problem yourself. * Solution 2 #+begin_src python def avg(a,b): return (a + b)/2 #+end_src - ~a~ and ~b~ are parameters - ~def f(p1, p2, p3, ... , pn)~ * Docstring - Documenting/commenting code is a good practice #+begin_src python def avg(a,b): """ avg takes two numbers as input (a & b), and returns the average of a and b""" return (a+b)/2 #+end_src - Docstring - written in the line after the ~def~ line. - Inside triple quote. - Documentation : avg? * Exercise 3 Add docstring to the function f. * Solution 3 #+begin_src python def f(x): """Accepts a number x as argument and, returns the square of the number x.""" return x*x #+end_src * Exercise 4 Write a python function named ~circle~ which returns the area and perimeter of a circle given radius ~r~. * Solution 4 #+begin_src python def circle(r): """returns area and perimeter of a circle given radius r""" pi = 3.14 area = pi * r * r perimeter = 2 * pi * r return area, perimeter #+end_src * ~what~ #+begin_src python def what( n ): if n < 0: n = -n while n > 0: if n % 2 == 1: return False n /= 10 return True #+end_src * ~even_digits~ #+begin_src python def even_digits( n ): """returns True if all the digits of number n is even returns False if all the digits of number n is not even""" if n < 0: n = -n while n > 0: if n % 2 == 1: return False n /= 10 return True #+end_src * ~what~ #+begin_src python def what( n ): i = 1 while i * i < n: i += 1 return i * i == n, i #+end_src * ~is_perfect_square~ #+begin_src python def is_perfect_square( n ): """returns True and square root of n, if n is a perfect square, otherwise returns False and the square root of the next perfect square""" i = 1 while i * i < n: i += 1 return i * i == n, i #+end_src * Summary - Functions in Python - Passing parameters to a function - Returning values from a function - We also did few code reading exercises. * 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