#+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 - 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