\documentclass{beamer}
\usepackage[utf8]{inputenc}
\hypersetup{colorlinks}
%\usepackage[pdftex,colorlinks,pdfnewwindow,hyperindex]{hyperref} %la derni\`ere!!!!
\usepackage{listings} %programmes python
\lstset{language={Python}} %python
\usetheme{Warsaw}
\title{Formation Python}
\author{}\institute{Lycée Carcouët}
\date{12 juin 2017}
\begin{document}

  \begin{frame}
  \titlepage
  \end{frame}


\section*{Résumé}


\AtBeginSubsection[]
{
  \begin{frame}<beamer>
    \frametitle{Résumé}
    \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}
\AtBeginSection[]
{
  \begin{frame}<beamer>
    \frametitle{Résumé}
    \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}

\section{Modules utiles au lycée}
\subsection{Le module math}

\begin{frame}[containsverbatim]
Les fonctions  sqrt, exp, log, log10, sin, cos, tan, asin, acos, atan, floor  \dots ainsi que pi, e, doivent être importées.

En ligne de commande :

\begin{center}
\begin{minipage}{0.8\linewidth}
\begin{lstlisting}[frame=single]
from math import *
\end{lstlisting}
\end{minipage}
\end{center}

Dans un programme, il vaut mieux importer chaque fonction :

\begin{center}
\begin{minipage}{0.8\linewidth}
\begin{lstlisting}[frame=single]
from math import exp,pi
\end{lstlisting}
\end{minipage}
\end{center}

\end{frame}

\begin{frame}[containsverbatim]
Certains recommandent (pour une meilleure lisibilité des programmes et au cas où des fonctions de modules différents portent des noms identiques) :

\begin{center}
\begin{minipage}{0.8\linewidth}
\begin{lstlisting}[frame=single]
import math
math.e
math.sin(math.pi/3)
\end{lstlisting}
\end{minipage}
\end{center}
\end{frame}

\subsection{Nombres complexes}

  
  \begin{frame}[containsverbatim]
Pour forme polaire, argument,  exponentielle complexe, importer le module cmath.


\begin{center}
\begin{minipage}{1\linewidth}
\lstset{showspaces=false}
\begin{lstlisting}[frame=single]
from cmath import polar, phase, exp
from math import degrees
z=complex(input("Entrer un complexe a+bj\n"))
print("module = ",abs(z))
print("partie reelle = ",z.real)
print("partie imaginaire = ",z.imag)
print("conjugue = ", z.conjugate())
print("argument : ",phase(z)," radians")
print("argument : ",degrees(phase(z))," degres")
print("forme polaire : ", polar(z))
print("exp(z) = ",exp(z))
\end{lstlisting}
\end{minipage}
\end{center}
\end{frame}

\begin{frame}

Voir le notebook NombresComplexes.ipynb


NB : 
\begin{itemize}
\item pour voir le contenu d'un module : dir(cmath) 
\item pour obtenir de l'aide sur une méthode : help(cmath.exp)
\item cmath.exp n'est pas le même que math.exp
\end{itemize}
  \end{frame}
  
 




\subsection{Le module random}
\begin{frame}[containsverbatim]
génération de nombres pseudo-aléatoires : un réel entre 0 et 1 ou un entier entre 1 et 6
\begin{center}
\begin{minipage}{0.8\linewidth}
\begin{verbatim}
>>> import random
>>> random.random()
0.6656199812165009
>>> random.randint(1,6)
2
\end{verbatim}
\end{minipage}
\end{center}

\end{frame}






\begin{frame}[containsverbatim]

Un programme 

\begin{center}
\begin{minipage}{0.8\linewidth}
\begin{lstlisting}[frame=single]
from random import randint
n=1
de=randint(1,6)
while (de != 6) :
    n=n+1
    de=randint(1,6)
print(n)
\end{lstlisting}
\end{minipage}
\end{center}

Une ébauche d'activité : notebook simulationjeudepetitschevaux.ipynb

\end{frame}

\subsection{numpy}

\begin{frame}
Pour le calcul matriciel (voir le notebook matrices.ipynb)
\end{frame}



\subsection{scipy}

\begin{frame}

Exemples : loi binomiale, normale, intégration

Plein de choses intéressantes sur \href{https://docs.scipy.org/doc/scipy/reference/tutorial/}{scipy.org}.
\end{frame}

\begin{frame}[containsverbatim]

Loi binomiale

\begin{center}
\begin{minipage}{1\linewidth}
\begin{lstlisting}[frame=single]
from scipy.stats import binom
print("loi binomiale de parametres n et p")
print("X est le nombre de succes")
n=int(input("saisir n\n"))
p=float(input("saisir p\n"))
k=int(input("saisir le nombre de succes k\n"))
print("P(X=k) = ",binom.pmf(k,n,p))
print("P(X<=k) = ",binom.cdf(k,n,p))
print("esperance=",binom.stats(n,p,moments='m'))
\end{lstlisting}
\end{minipage}
\end{center}
\end{frame}
\begin{frame}

Calculs sur la loi binomiale et diagramme en bâtons dans le notebook loibinomiale.ipynb
\end{frame}

\begin{frame}[containsverbatim]

Loi normale
\begin{center}
\begin{minipage}{0.8\linewidth}
\begin{verbatim}
from scipy.stats import norm
>>> norm.cdf(3,loc=0,scale=1)
0.9986501019683699
>>> norm.cdf(2,loc=0,scale=1)
0.97724986805182079
>>> norm.cdf(1,loc=0,scale=1)
0.84134474606854293
>>> norm.cdf(10,loc=10,scale=30)
0.5
>>> norm.cdf(15,loc=10,scale=30)
0.56618383261090366
\end{verbatim}
\end{minipage}
\end{center}

Si $X$ suit une loi normale, on calcule ainsi $P(X \leqslant a)$.
Le premier argument est $a$.
loc est l'espérance.
scale est l'écart-type.

\end{frame}




\begin{frame}[containsverbatim]

Intégration

\begin{center}
\begin{minipage}{1\linewidth}
\begin{verbatim}
>>> import scipy.integrate as integrate

>>> def carre(x):
    return x*x

>>> integrate.quad(carre, 0, 3)
(9.000000000000002, 9.992007221626411e-14)
\end{verbatim}
\end{minipage}
\end{center}


\end{frame}
\subsection{matplotlib}



\begin{frame}

Tracé de représentations graphiques de fonctions ou de suites.


Voir le notebook graphiques.ipynb et simulations.ipynb

Plein d'autres choses \href{http://matplotlib.org/users/tutorials.html}{ici}.
\end{frame}
\section{Spyder}

\begin{frame}
Spyder est présent dans la distribution Anaconda

 \medskip
 
\begin{itemize}
\item un éditeur
\item une console
\item un explorateur de variables (menu Affichage)
%\item analyse de code statique (menu Source)
\end{itemize}
\end{frame}

\section{Jupyter}
\begin{frame}

Jupyter est présent dans la distribution Anaconda

\medskip


\begin{itemize}

\item Pour créer des notebooks

\item Utilisable en ligne : \href{http://try.jupyter.org}{try.jupyter.org}

sur pc, téléphone, tablette : on peut y programmer en Python.


\end{itemize}
\end{frame}

\end{document}