summaryrefslogtreecommitdiff
path: root/advanced_python/practice_functions.tex
diff options
context:
space:
mode:
authorPrabhu Ramachandran2017-11-17 23:03:18 +0530
committerPrabhu Ramachandran2017-11-17 23:03:18 +0530
commitb64d87addfc4b90e3a2c93763eff8faf1e7cee21 (patch)
tree6cacdbfbebdb120ce3cc1c4a86453d635038f49d /advanced_python/practice_functions.tex
parent3b7ed43d8d159470654351c31a52f9edeaeaa60c (diff)
downloadpython-workshops-b64d87addfc4b90e3a2c93763eff8faf1e7cee21.tar.gz
python-workshops-b64d87addfc4b90e3a2c93763eff8faf1e7cee21.tar.bz2
python-workshops-b64d87addfc4b90e3a2c93763eff8faf1e7cee21.zip
Rename the files for easier navigation.
Diffstat (limited to 'advanced_python/practice_functions.tex')
-rw-r--r--advanced_python/practice_functions.tex222
1 files changed, 0 insertions, 222 deletions
diff --git a/advanced_python/practice_functions.tex b/advanced_python/practice_functions.tex
deleted file mode 100644
index ce7c9d6..0000000
--- a/advanced_python/practice_functions.tex
+++ /dev/null
@@ -1,222 +0,0 @@
-\documentclass[14pt,compress,aspectratio=169]{beamer}
-
-\input{macros.tex}
-
-\title[Practice advanced functions]{Advanced Python}
-\subtitle{Practice advanced functions}
-
-\author[FOSSEE] {The FOSSEE Group}
-
-\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
-\date[] {Mumbai, India}
-
-\begin{document}
-
-\begin{frame}
- \titlepage
-\end{frame}
-
-\begin{frame}[plain, fragile]
- \frametitle{Exercise: product of all arguments}
- \begin{block}{}
- Write a function called \lstinline{prod} that can be called with any
- number of arguments (at least one) but computes the product of all the
- given values as seen below.
- \end{block}
-
-\begin{lstlisting}
-In []: prod(2., 2.)
-Out[]: 4.0
-
-In []: prod(1, 2, 3)
-Out[]: 6
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[plain, fragile]
- \frametitle{Solution}
-\begin{lstlisting}
-def prod(*args):
- res = 1.0
- for x in args:
- res *= x
- return res
-
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[plain, fragile]
- \frametitle{Another solution}
-\begin{lstlisting}
-def prod(*args):
- res = args[0]
- for i in range(1, len(args)):
- res *= args[i]
- return res
-
-\end{lstlisting}
-\end{frame}
-
-
-\begin{frame}[plain, fragile]
- \frametitle{Exercise: function applied to arguments}
- \begin{block}{}
- Write a function called \lstinline{apply} which takes a function followed
- by an arbitrary number of arguments and returns a list with the function
- applied to all the arguments as shown below.
- \end{block}
-
-\begin{lstlisting}
-In []: def twice(x):
- ...: return x*2
-
-In []: apply(twice, 1, 2)
-Out[]: [2, 4]
-
-In []: apply(twice, 1, 2, 3)
-Out[]: [2, 4, 6]
-
-\end{lstlisting}
-\end{frame}
-
-
-\begin{frame}[plain, fragile]
- \frametitle{Solution}
-\begin{lstlisting}
-def apply(f, *args):
- result = []
- for arg in args:
- result.append(f(arg))
- return result
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[plain, fragile]
- \frametitle{Exercise: number of kwargs}
- \begin{block}{}
- Write a function \lstinline{nkw} that takes an arbitrary number of
- keyword arguments and returns the number of keyword arguments passed.
- \end{block}
-
-\begin{lstlisting}
-In []: nkw(x=1, y=2)
-Out[]: 2
-
-In []: nkw()
-Out[]: 0
-
-In []: nkw(x=1)
-Out[]: 1
-\end{lstlisting}
-\end{frame}
-
-
-\begin{frame}[plain, fragile]
- \frametitle{Solution}
-\begin{lstlisting}
-def nkw(**kw):
- return len(kw)
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[plain, fragile]
- \frametitle{Exercise: name of kwargs}
- \begin{block}{}
- Write a function \lstinline{kwname} that takes an arbitrary number of
- keyword arguments and returns a sorted list of the keyword arguments
- passed.
- \end{block}
-
-\begin{lstlisting}
-In []: kwname(x=1, y=2)
-Out[]: ['x', 'y']
-
-In []: kwname()
-Out[]: []
-
-In []: kwname(z=1, a=2)
-Out[]: ['a', 'z']
-\end{lstlisting}
-\end{frame}
-
-
-\begin{frame}[plain, fragile]
- \frametitle{Solution}
-\begin{lstlisting}
-def kwname(**kw):
- return sorted(kw.keys())
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[plain, fragile]
- \frametitle{Exercise: power function}
- \begin{block}{}
- Write a function called \lstinline{power} that is given a single integer
- and returns a function that takes a single number but returns its power.
- For example:
- \end{block}
-
-\begin{lstlisting}
-In []: pow2 = power(2)
-In []: pow2(2)
-Out[]: 4
-In []: pow2(4)
-Out[]: 16
-
-In []: pow3 = power(3)
-In []: pow3(2)
-Out[]: 8
-\end{lstlisting}
- Hint: this is a closure.
-\end{frame}
-
-
-\begin{frame}[plain, fragile]
- \frametitle{Solution}
-\begin{lstlisting}
-def power(n):
- def g(x):
- return x**n
- return g
-
-\end{lstlisting}
-\end{frame}
-
-
-\begin{frame}[plain, fragile]
- \frametitle{Exercise: debug function}
- \begin{block}{}
- Write a function called \lstinline{debug} that takes any function as a
- single positional argument but returns a function that first prints out
- the arguments passed to the function before calling it and returning its
- value. For example:
- \end{block}
-
-\begin{lstlisting}
-In []: debug(max)(1, 2)
-(1, 2) {}
-Out[]: 2
-
-In []: import math
-
-In []: debug(math.sin)(1.0)
-(1.0,) {}
-Out[]: 0.8414709848078965
-
-\end{lstlisting}
-\end{frame}
-
-
-\begin{frame}[plain, fragile]
- \frametitle{Solution}
-\begin{lstlisting}
-def debug(f):
- def g(*args, **kw):
- print(args, kw)
- return f(*args, **kw)
- return g
-\end{lstlisting}
-\end{frame}
-
-
-\end{document}