diff options
| author | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2021-05-25 17:10:49 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2021-05-25 17:10:49 +0200 |
| commit | d6c61d988bfa4255baf9cdae42db59ebee38363f (patch) | |
| tree | 118ff3c2424e735149c145524965a4a337e50beb /src/Lecture4/slides/6-PythonIntroduction.tex | |
| parent | 46eef66b1e1571c77dc828d7e950b129b4c8bfd0 (diff) | |
| download | mathsoftware-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.tex | 466 |
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 | |||
