aboutsummaryrefslogtreecommitdiff
path: root/src/Lecture4/slides/6-PythonIntroduction.tex
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano.tronto@gmail.com>2021-05-25 17:10:49 +0200
committerSebastiano Tronto <sebastiano.tronto@gmail.com>2021-05-25 17:10:49 +0200
commitd6c61d988bfa4255baf9cdae42db59ebee38363f (patch)
tree118ff3c2424e735149c145524965a4a337e50beb /src/Lecture4/slides/6-PythonIntroduction.tex
parent46eef66b1e1571c77dc828d7e950b129b4c8bfd0 (diff)
downloadmathsoftware-d6c61d988bfa4255baf9cdae42db59ebee38363f.tar.gz
mathsoftware-d6c61d988bfa4255baf9cdae42db59ebee38363f.zip
Added files
Diffstat (limited to 'src/Lecture4/slides/6-PythonIntroduction.tex')
-rw-r--r--src/Lecture4/slides/6-PythonIntroduction.tex466
1 files changed, 466 insertions, 0 deletions
diff --git a/src/Lecture4/slides/6-PythonIntroduction.tex b/src/Lecture4/slides/6-PythonIntroduction.tex
new file mode 100644
index 0000000..6c2ec45
--- /dev/null
+++ b/src/Lecture4/slides/6-PythonIntroduction.tex
@@ -0,0 +1,466 @@
1\documentclass[11pt]{beamer}
2\usetheme{Madrid}
3\usepackage[utf8]{inputenc}
4\usepackage{amsmath}
5
6\usepackage{tikz}
7\usetikzlibrary{calc}
8\usepackage{svg}
9
10\author[\texttt{sebastiano.tronto@uni.lu}]{Sebastiano Tronto}
11\title[Python Intro and a bit of Sage]%
12{A Practical Introduction to Python (and a bit of Sage)}
13\logo{\includegraphics[scale=0.1]{img/unilu.jpg}}
14%\institute{University of Luxembourg}
15
16\date{2021-04-02}
17
18\begin{document}
19
20\begin{frame}
21 \titlepage
22\end{frame}
23
24\begin{frame}{Second part - schedule}
25 \begin{tabular}{l|c|c|l}
26 \textbf{Date} & \textbf{Topics} & \textbf{Homework} & \textbf{Deadline} \\
27 \hline
28 April 2 & Python ``review'', a bit of Sage & (see March 26) & April 18 \\
29 \hline
30 April 23 & Sage: Algebra and Crypto & Homework 3 & May 9 \\
31 \hline
32 May 7 & Sage: Analysis and Statistics & Homework 4 & May 30 \\
33 \hline
34 May 21 & Fast code, other software &
35 \end{tabular}
36\end{frame}
37
38
39\begin{frame}{What is programming?}
40 \begin{columns}
41 \column{0.35\textwidth}
42 \includegraphics[scale=0.12]{img/laptop.png}
43 \column{0.1\textwidth}
44 \begin{center}\includegraphics[scale=0.12]{img/equal.png}\end{center}
45 \column{0.35\textwidth}
46 \includegraphics[scale=0.9]{img/calc.jpg}
47 \end{columns}
48 \begin{itemize}
49 \item Software (apps): commands written in a \emph{programming language}
50 \item Programming language: mix of English and symbols
51 \item The code is \emph{compiled} to machine language (C, C++) or\\
52 \emph{interpreted} by some software in the middle (Python)
53 \end{itemize}
54\end{frame}
55
56
57\begin{frame}{Python}
58 \begin{columns}
59 \column{0.7\textwidth}
60 \url{https://www.python.org}
61
62 \vspace{0.3cm}
63 \begin{itemize}
64 \item Interpreted: slower than C, usable interactively
65 \item Simple syntax, easy to learn
66 \item Very popular
67 \item Sage is based on Python
68 \end{itemize}
69 \column{0.25\textwidth}
70 \includegraphics[scale=0.16]{img/python.png}
71 \end{columns}
72\end{frame}
73
74\begin{frame}{The interpreter - Python as a calculator}
75 \begin{center}
76 \includegraphics[scale=0.3]{img/term.png}
77 \end{center}
78\end{frame}
79
80\begin{frame}{The interpreter - Python as a calculator}
81 \url{https://www.python.org/shell}
82
83 \vspace{0.3cm}
84 \begin{itemize}
85 \item Each line executed as you enter it, result is printed
86 \item Usual math operations work: try them!
87 \begin{center}
88 \texttt{a+b, a-b, a*b, a/b}\\
89 \texttt{a**b (power), a//b (integer division), a\%b (remainder)}
90 \end{center}
91 \item More math functions:
92 \begin{center} \begin{tabular}{l}
93 \texttt{import math} \\
94 \texttt{math.sqrt(3)}
95 \end{tabular} \end{center}
96 \end{itemize}
97\end{frame}
98
99
100\begin{frame}{Help!}
101 \begin{itemize}
102 \item Type \texttt{help()} for interactive help
103 \item Try \texttt{help("math")} and \texttt{help("import")}
104 \item What does
105 \begin{center} \texttt{from math import *} \end{center}
106 do?
107 \end{itemize}
108\end{frame}
109
110\begin{frame}{Variables}
111 \texttt{variable\_name = value \qquad \# This is an assignment}
112
113 \vspace{0.3cm}
114 \begin{itemize}
115 \item Save results, use them later
116 \item \texttt{variable\_name}: combination of letters, numbers, underscores
117 \item \texttt{=} always means \emph{assignment}, never \emph{equality}
118 \end{itemize}
119\end{frame}
120
121\begin{frame}{Types}
122 \texttt{type(variable\_name) \qquad \# Get the type of a variable}
123
124 \vspace{0.3cm}
125 \begin{itemize}
126 %\item Tells the computer how to read a variable
127 \item In other languages you must specify the type of a variable
128 \item Python figures out automatically (\emph{dynamic typing})
129 \item Each type allows different operations
130 \end{itemize}
131\end{frame}
132
133
134\begin{frame}{Other types: Boolean and String}
135 \texttt{my\_bool = True}
136
137 \texttt{s1 = "hello!" \qquad \# Same as 'hello!'}
138
139 \vspace{0.3cm}
140 \begin{itemize}
141 \item \texttt{bool}: \texttt{True} or \texttt{False}
142 \begin{itemize}
143 \item Operations on \texttt{bool}:
144 \texttt{and}, \texttt{or}, \texttt{not}
145 \item Operations with boolean result: \texttt{==}, \texttt{!=},
146 \texttt{>}, \texttt{<}, \texttt{>=}, \texttt{<=}
147 \end{itemize}
148 \item \texttt{str}: a string of characters
149 \begin{itemize}
150 \item Useful operations:
151
152 \begin{tabular}{ll}
153 \texttt{len({\bf str})} & \texttt{\# Length, integer value} \\
154 \texttt{{\bf str} + {\bf str}} & \texttt{\# Concatenation} \\
155 \texttt{{\bf int} * {\bf str}} & \texttt{\# Repetition}
156 \end{tabular}
157 \end{itemize}
158 \end{itemize}
159\end{frame}
160
161\begin{frame}{Lists and sets}
162 %\texttt{(2.5, True, "hello") \qquad \# Tuple}
163
164 \texttt{[2.5, True, "hello"] \qquad \# List}
165
166 \texttt{\{2.5, True, "hello"\} \qquad \# Set}
167
168 \vspace{0.3cm}
169 \begin{itemize}
170 %\item Different collections of objects
171 %\item Tuple: immutable
172 \item Lists: keep order and duplicates
173 \item Sets: disregard order and duplicates, allow set operations
174 \end{itemize}
175\end{frame}
176
177
178\begin{frame}{Lists and sets}
179 Things in common (\emph{\texttt{A} is a list or a set}):
180
181 \vspace{0.3cm}
182 \begin{itemize}
183 \item \texttt{len(A)}: number of elements (\texttt{\bf int})
184 \item \texttt{x in A}: check if \texttt{x} is in \texttt{A}
185 (\texttt{\bf bool})
186 \item If \texttt{A} contains numbers: \texttt{max(A)}, \texttt{min(A)},
187 \texttt{sum(A)}
188 \end{itemize}
189
190 \vspace{0.3cm}
191 Pass from one type to the other: \texttt{set(A)} and \texttt{list(A)}
192\end{frame}
193
194\begin{frame}{List (and set) comprehension}
195 \texttt{[x**2 {\bf for} x {\bf in} [-1,4,1,0] {\bf if} x < 3]
196 \quad\# Result: [1,1,0]}
197
198 \texttt{\{x**2 {\bf for} x {\bf in} [-1,4,1,0] {\bf if} x < 3\}
199 \quad\# Result: \{0,1\}}
200
201 \vspace{0.3cm}
202 \begin{itemize}
203 \item Mathematical way to define lists and sets
204 \item Complete syntax:
205
206 \vspace{0.2cm}
207 \texttt{[f(x,y,\dots) {\bf for} x {\bf in} L {\bf for} y {\bf in} M
208 \dots \quad {\bf if} cond(x,y,\dots)]}
209
210 \vspace{0.2cm}
211 \begin{itemize}
212 \item Use as many variables \texttt{x, y, \dots} as you want
213 \item \texttt{L, M, \dots} are lists or sets or other collections
214 \item \texttt{f(x,y,\dots)} is any expression depending on the
215 variables
216 \item \texttt{cond(x,y,\dots)} has Boolean value
217 \end{itemize}
218 \end{itemize}
219\end{frame}
220
221\begin{frame}{Lists: access elements and sublists}
222 \begin{tabular}{ll}
223 \texttt{A[i]} &
224 \texttt{\# i-th element of A ($i\in \{0,\dots,\texttt{len(A)}-1\}$)} \\
225 \texttt{A[i] = value} & \texttt{\# Change i-th element of A} \\
226 \texttt{A[i:j:k]} & \texttt{\# Sublist from A[i] to A[j] with step k} \\
227 \texttt{A[i:j]} & \texttt{\# Same as A[i:j:1]} \\
228 \texttt{A[i:]} & \texttt{\# Same as A[i:len(A):1]} \\
229 \texttt{A[:j]} & \texttt{\# Same as A[0:j:1]}
230 \end{tabular}
231\end{frame}
232
233\begin{frame}{List operations}
234 \begin{tabular}{ll}
235 \texttt{A.append(x)} & \texttt{\# Append x to A ({\bf change A})} \\
236 \texttt{A.insert(i,x)} &
237 \texttt{\# Insert x in position i ({\bf change A})} \\
238 \texttt{del A[i]} & \texttt{\# Remove i-th element of A ({\bf change A})}\\
239 \end{tabular}
240
241 \vspace{1cm}
242 \begin{tabular}{ll}
243 \texttt{A+B} & \texttt{\# Concatenation of A and B ({\bf list})} \\
244 \texttt{A*n} & \texttt{\# Repetition of A ({\bf list})} \\
245 \end{tabular}
246\end{frame}
247
248\begin{frame}{Set operations}
249 \begin{tabular}{ll}
250 \texttt{A.add(x)} & \texttt{\# Add x to A ({\bf change A})} \\
251 \texttt{A.remove(x)} & \texttt{\# Remove x from A ({\bf change A})}\\
252 \end{tabular}
253
254 \vspace{0.5cm}
255 \begin{tabular}{ll}
256 \texttt{A < B} (or \texttt{A <= B}) &
257 \texttt{\# A contained in (or equal to) B ({\bf bool})} \\
258 \texttt{A > B} (or \texttt{A >= B}) &
259 \texttt{\# A containes (or is equal to) B ({\bf bool})} \\
260 \end{tabular}
261
262 \vspace{0.5cm}
263 \begin{tabular}{ll}
264 \texttt{A | B} & \texttt{\# Union ({\bf set})} \\
265 \texttt{A \& B} & \texttt{\# Intersection ({\bf set})}\\
266 \texttt{A - B} & \texttt{\# Set difference ({\bf set})} \\
267 \end{tabular}
268\end{frame}
269
270\begin{frame}{Writing more complex programs}
271 \begin{center}\includegraphics[scale=0.25]{img/geany.png}\end{center}
272\end{frame}
273
274\begin{frame}{Non-interactive Python}
275 \begin{itemize}
276 \item You can write a file (for example with \url{https://www.geany.org})
277 \item Output results with \texttt{print("string", or, other, values)}
278 \item Get input (\texttt{str}) with \texttt{x = input("Prompt: ")},
279 convert with \texttt{int(x)} or \texttt{float(x)}\dots
280 \item Blocks of code: use \emph{indentation} (see next slides)
281 \end{itemize}
282\end{frame}
283
284\begin{frame}[fragile]{\texttt{if} statement}
285 \begin{columns}
286 \column{0.45\textwidth}
287 \texttt{{\bf if} \emph{condition}:}
288
289 \texttt{\qquad instruction1}
290
291 \texttt{\qquad instruction2}
292
293 \texttt{\qquad \dots}
294
295 \texttt{{\bf else}: \# This is optional}
296
297 \texttt{\qquad other inst}
298 \column{0.55\textwidth}
299 \begin{tikzpicture}
300 \tikzstyle{s} = [rectangle, rounded corners, text centered,
301 draw=black, fill=red!30]
302 \tikzstyle{p} = [rectangle, text centered, draw=black, fill=orange!30]
303 \tikzstyle{d} = [rectangle, text centered, draw=black, fill=green!30]
304
305 \node(start) [s] {Start};
306 \node(cond) [d, below of=start] {\texttt{\emph{condition}}?};
307 \node(inst1) [p, right of=cond, xshift=2.7cm] {\texttt{instruction1}};
308 \node(inst2) [p, below of=inst1] {\texttt{instruction2}};
309 \node(dots) [p, below of=inst2] {\texttt{\dots}};
310 \node(other) [p, below of=cond, yshift=-0.5cm] {\texttt{other inst}};
311 \node(end) [s, below of=other, yshift=-0.5cm] {End};
312
313 \draw[->] (start) -- (cond);
314 \draw[->] (cond) -- node[anchor=south] {\texttt{True}} (inst1);
315 \draw[->] (inst1) -- (inst2);
316 \draw[->] (inst2) -- (dots);
317 \draw[->] (cond) -- node[anchor=east] {\texttt{False}} (other);
318 \draw[->] (dots) |- (end);
319 \draw[->] (other) -- (end);
320 \end{tikzpicture}
321 \end{columns}
322\end{frame}
323
324
325\begin{frame}[fragile]{\texttt{while} loop}
326 \begin{columns}
327 \column{0.45\textwidth}
328 \texttt{{\bf while} \emph{condition}:}
329
330 \texttt{\qquad instruction1}
331
332 \texttt{\qquad instruction2}
333
334 \texttt{\qquad \dots}
335 \column{0.55\textwidth}
336 \begin{tikzpicture}
337 \tikzstyle{s} = [rectangle, rounded corners, text centered,
338 draw=black, fill=red!30]
339 \tikzstyle{p} = [rectangle, text centered, draw=black, fill=orange!30]
340 \tikzstyle{d} = [rectangle, text centered, draw=black, fill=green!30]
341
342 \node(start) [s] {Start};
343 \node(cond) [d, below of=start] {\texttt{\emph{condition}}?};
344 \node(inst1) [p, right of=cond, xshift=2.7cm] {\texttt{instruction1}};
345 \node(inst2) [p, below of=inst1] {\texttt{instruction2}};
346 \node(dots) [p, below of=inst2] {\texttt{\dots}};
347 \node(end) [s, below of=other, yshift=-0.5cm] {End};
348
349 \draw[->] (start) -- (cond);
350 \draw[->] (cond) -- node[anchor=south] {\texttt{True}} (inst1);
351 \draw[->] (inst1) -- (inst2);
352 \draw[->] (inst2) -- (dots);
353 \draw[->] (cond) -- node[anchor=east] {\texttt{False}} (end);
354 \draw[->] (dots) -| ($(cond.south)+(0.4,0)$);
355 \end{tikzpicture}
356 \end{columns}
357\end{frame}
358
359\begin{frame}{\texttt{for} loop}
360 \texttt{{\bf for} i {\bf in} A:}
361
362 \texttt{\qquad instruction1}
363
364 \texttt{\qquad instruction2}
365
366 \texttt{\qquad \dots}
367
368 \vspace{0.3cm}
369 \begin{itemize}
370 \item Repeats instructions as \texttt{i} varies in \texttt{A}
371 \item \texttt{A} can be list, set or other collection
372 \item Example: \texttt{A} can be \texttt{range(\emph{a,b,step})}
373 \end{itemize}
374\end{frame}
375
376
377\begin{frame}{Functions}
378 \texttt{{\bf def} f(x, y, \dots): }
379
380 \texttt{\qquad instruction1}
381
382 \texttt{\qquad instruction2}
383
384 \texttt{\qquad \dots}
385
386 \texttt{\qquad {\bf return} some\_value}
387
388 \vspace{0.3cm}
389 \begin{itemize}
390 \item Useful to divide programs into ``pieces''
391 \item The result of \texttt{f(x,y,\dots)} is given by \texttt{return \dots}
392 \end{itemize}
393\end{frame}
394
395\begin{frame}{An example of function (with recursion)}
396 \texttt{def fibonacci(n):}
397
398 \texttt{\qquad if n == 0:}
399
400 \texttt{\qquad \qquad return 0}
401
402 \texttt{\qquad if n == 1:}
403
404 \texttt{\qquad \qquad return 1}
405
406 \texttt{\qquad return fibonacci(n-1) + fibonacci(n-2)}
407
408 \vspace{0.3cm}
409 \begin{itemize}
410 \item Elegant, but slow (in this case)
411 \item Can get stuck in infinite loop: when?
412 \end{itemize}
413\end{frame}
414
415\begin{frame}{Sage}
416 \begin{center}
417 \includesvg[scale=0.5]{img/sage}
418
419 \url{https://www.sagemath.org}
420 \end{center}
421
422 \vspace{0.3cm}
423 \begin{itemize}
424 \item Mathematical software, uses Python as a language
425 \item Use it interactively or with Jupyter notebook
426 \item Try it online: \url{https://sagecell.sagemath.org} or
427 \url{https://cocalc.com/app}
428 \end{itemize}
429\end{frame}
430
431\begin{frame}{Differences with Python}
432 \begin{tabular}{l|l}
433 \textbf{Python} & \textbf{Sage} \\
434 \texttt{{\color{gray}>>>} {\color{blue}type(5)}} &
435 \texttt{{\color{gray}sage:} {\color{blue}type(5)}} \\
436 \texttt{<class 'int'>} & \texttt{<class 'sage.rings.integer.Integer'>} \\
437 \texttt{{\color{gray}>>>} {\color{blue}5/2}} &
438 \texttt{{\color{gray}sage:} {\color{blue}5/2}} \\
439 \texttt{2.5} & \texttt{5/2} \\
440 \texttt{{\color{gray}>>>} {\color{blue}type(5/2)}} &
441 \texttt{{\color{gray}sage:} {\color{blue}type(5/2)}} \\
442 \texttt{<class 'float'>} &
443 \texttt{<class 'sage.rings.rational.Rational'>} \\
444 \texttt{{\color{gray}>>>} {\color{blue}type(2.5)}} &
445 \texttt{{\color{gray}sage:} {\color{blue}type(2.5)}} \\
446 \texttt{<class 'float'>} &
447 \texttt{<class 'sage.rings.real\_mpfr.RealLiteral'>} \\
448 \texttt{{\color{gray}>>>} {\color{blue}5**3}} &
449 \texttt{{\color{gray}sage:} {\color{blue}5\^{}3}} \\
450 \texttt{125} & \texttt{125}
451 \end{tabular}
452\end{frame}
453
454\begin{frame}{Sage Documentation}
455 \begin{itemize}
456 \item Tutorial (guided examples): type \texttt{tutorial()} or visit
457 \url{https://doc.sagemath.org/html/en/tutorial}
458 \item \texttt{help()}: works as in Python
459 \item Reference manual (detailed technical information):
460 \url{https://doc.sagemath.org/html/en/reference}
461 \end{itemize}
462\end{frame}
463
464
465\end{document}
466

Generated with cgit - Back to sebastiano.tronto.net