Skip to content
This repository has been archived by the owner on Jan 13, 2024. It is now read-only.

Commit

Permalink
style
Browse files Browse the repository at this point in the history
  • Loading branch information
sdpython committed Feb 4, 2023
1 parent 37b7c55 commit 9f4898f
Show file tree
Hide file tree
Showing 47 changed files with 143 additions and 142 deletions.
Expand Up @@ -110,5 +110,5 @@ def AUC(answers, scores):

if __name__ == "__main__":
if len(sys.argv) < 3:
raise Exception(f"bad arguments: {sys.argv}")
raise RuntimeError(f"bad arguments: {sys.argv}")
main_codalab_wrapper(AUC, "AUC", sys.argv)
Expand Up @@ -74,7 +74,7 @@
df_group = pandas.read_excel(path_df, engine='openpyxl')
for col in [col_subject, col_mail, col_group, col_student]:
if col not in df_group.columns:
raise Exception(f'{col} not in {list(df_group.columns)}')
raise RuntimeError(f'{col} not in {list(df_group.columns)}')
else:
df_group = None

Expand Down
58 changes: 29 additions & 29 deletions _latex/ensae/td_note_2016_actuariat.tex
Expand Up @@ -3,7 +3,7 @@

\firstpassagedo{
\newcommand{\sametextforthisinterro}[0]{
\huge Formation pour l'Actuaire Data Scientist, TD noté
\huge Formation pour l'Actuaire Data Scientist, TD not�
\normalsize
}

Expand All @@ -12,13 +12,13 @@


\exosubject{}
\begin{xexercice}\label{td_note_label1__2016}%\indexfrr{énoncé}{pratique}
\begin{xexercice}\label{td_note_label1__2016}%\indexfrr{�nonc�}{pratique}


Louer ou acheter un appartement ? A surface égale, est-il préférable de louer ou d'acheter son appartement~? Cet exercice propose différentes questions afin d'y répondre. On rappelle le mécanisme d'un prêt. On emprunte une somme $K$ à un taux $p$ et on paye une mensualité $M$. Le taux mensuel est $m=(1+p)^\frac{1}{12}-1$.
Ce taux s'applique chaque mois sur la somme du capital restant à rembourser. Au mois suivant, l'emprunteur aura payé $M$ euros dont $Km$ en intérêt et $M-Km$ en capital. Le mois suivant, l'emprunteur doit rembourser $K-Km$.
Louer ou acheter un appartement ? A surface �gale, est-il pr�f�rable de louer ou d'acheter son appartement~? Cet exercice propose diff�rentes questions afin d'y r�pondre. On rappelle le m�canisme d'un pr�t. On emprunte une somme $K$ un taux $p$ et on paye une mensualit� $M$. Le taux mensuel est $m=(1+p)^\frac{1}{12}-1$.
Ce taux s'applique chaque mois sur la somme du capital restant rembourser. Au mois suivant, l'emprunteur aura pay� $M$ euros dont $Km$ en int�r�t et $M-Km$ en capital. Le mois suivant, l'emprunteur doit rembourser $K-Km$.

\exequest La fonction suivante calcule toutes les mensualités de ce prêt.
\exequest La fonction suivante calcule toutes les mensualit�s de ce pr�t.

\begin{verbatimx}
def mensualites(K,M,p):
Expand All @@ -27,7 +27,7 @@
i = K * ((1+p)**(1.0/12)-1)
cap = M-i
if cap < 0:
raise Exception("cas exceptionnel")
raise RuntimeError("cas exceptionnel")
K -= cap
if K < 0:
res.append(M + K) # ligne A
Expand All @@ -37,12 +37,12 @@
\end{verbatimx}

\begin{itemize}
\item Quelle relation relie le durée du prêt et la longueur de la liste retournée par la fonction ? (1 point)
\item Quelle relation relie le dur�e du pr�t et la longueur de la liste retourn�e par la fonction ? (1 point)
\item A quoi correspond le cas exceptionnel ? (1 point)
\item A quoi sert la ligne A ? (1 point)
\end{itemize}

\exequest La fonction précédente calcule la durée d'un prêt en fonction du montant, de la mensualité et du taux d'intérêt ? Que fait la fonction suivante ? (1 point)
\exequest La fonction pr�c�dente calcule la dur�e d'un pr�t en fonction du montant, de la mensualit� et du taux d'int�r�t ? Que fait la fonction suivante ? (1 point)

\begin{verbatimx}
def somme_maximale(M,p,Y):
Expand All @@ -55,7 +55,7 @@
\end{verbatimx}


\exequest A Paris, on loue un appartement pour $L$ euros du m$^2$. Un parisien loue son appartement de $S m^2$ pour $SL$ euros. Ce parisien peut dépenser $A$ euros par mois répartis en $SL$ le loyer et $A-SL$ les économies. Ecrire une fonction qui calcule les économies réalisées au bout de $Y$ années : (1~point)
\exequest A Paris, on loue un appartement pour $L$ euros du m$^2$. Un parisien loue son appartement de $S m^2$ pour $SL$ euros. Ce parisien peut d�penser $A$ euros par mois r�partis en $SL$ le loyer et $A-SL$ les �conomies. Ecrire une fonction qui calcule les �conomies r�alis�es au bout de $Y$ ann�es : (1~point)

\begin{verbatimx}
def economie(A,S,L,r,Y):
Expand All @@ -64,35 +64,35 @@
\end{verbatimx}


\exequest En considérant que ce même parisien ne peut dépenser plus de $A$ euros par mois, qu'il ne possède rien au début de sa carrière professionnelle, on veut connaître la surface qu'il sera en mesure d'acheter chaque année entre 20 et 40 ans. On suppose qu'il peut se constituer un apport en capital issu de ces économies et d'un don de ses parents. On suppose que le prix au mètre carré à Paris est $C$ et qu'il veut emprunter avec un prêt d'une durée fixe. Voici les constantes à utiliser : (2~points)
\exequest En consid�rant que ce m�me parisien ne peut d�penser plus de $A$ euros par mois, qu'il ne poss�de rien au d�but de sa carri�re professionnelle, on veut conna�tre la surface qu'il sera en mesure d'acheter chaque ann�e entre 20 et 40 ans. On suppose qu'il peut se constituer un apport en capital issu de ces �conomies et d'un don de ses parents. On suppose que le prix au m�tre carr� � Paris est $C$ et qu'il veut emprunter avec un pr�t d'une dur�e fixe. Voici les constantes utiliser : (2~points)

\begin{center}\begin{small}\begin{tabular}{l|r|l|l}
nom & valeur & unité & sens \\ \hline
nom & valeur & unit� & sens \\ \hline
D & 50000 & euros & don de ses parents \\
A & 1200 & euros/mois & somme allouée au loyer + économies \\
A & 1200 & euros/mois & somme allou�e au loyer + �conomies \\
S & 35 & $m^2$ & surface de l'appartement \\
L & 25 & euros/$m^2$ & prix du loyer au mètre carré \\
L & 25 & euros/$m^2$ & prix du loyer au m�tre carr� \\
r & 0.01 & & rendement annuel de l'argent (livret A) \\
Y & 20 & années & durée de l'emprunt \\
C & 8000 & euros/$m^2$ & prix d'achat au mètre carré \\
Y & 20 & ann�es & dur�e de l'emprunt \\
C & 8000 & euros/$m^2$ & prix d'achat au m�tre carr� \\
p & 0.02 & & taux annuel de l'emprunt bancaire
\end{tabular}\end{small}\end{center}

\begin{verbatimx}
def tableau_surface(D,A,S,L,r,Y,C,p):
# ....
return liste [(année, surface, prix)]
return liste [(ann�e, surface, prix)]
\end{verbatimx}

\exequest Même question mais on tient compte de l'inflation du prix du mètre carré à Paris, environ $i=5\%$ par ans. (2~points)
\exequest M�me question mais on tient compte de l'inflation du prix du m�tre carr� � Paris, environ $i=5\%$ par ans. (2~points)

\exequest Construire un dataframe avec les résultats de la fonction précédente. Ce dataframe aura une ligne pour chaque année et trois colonnes pour trois taux d'inflation différents : 3\%, 5\%, 7\%. Afficher les trois courbes sur le même graphique.
\exequest Construire un dataframe avec les r�sultats de la fonction pr�c�dente. Ce dataframe aura une ligne pour chaque ann�e et trois colonnes pour trois taux d'inflation diff�rents : 3\%, 5\%, 7\%. Afficher les trois courbes sur le m�me graphique.

\exequest Même question mais on tient compte d'une augmentation de salaire selon un scénario de votre choix. (2~points)
\exequest M�me question mais on tient compte d'une augmentation de salaire selon un sc�nario de votre choix. (2~points)

\exequest Construire un dataframe avec les résultats de la fonction précédente. Ce dataframe aura une ligne pour chaque année et trois colonnes pour trois scénarios différents. Afficher les trois courbes sur le même graphique. (1~point)
\exequest Construire un dataframe avec les r�sultats de la fonction pr�c�dente. Ce dataframe aura une ligne pour chaque ann�e et trois colonnes pour trois sc�narios diff�rents. Afficher les trois courbes sur le m�me graphique. (1~point)

\exequest Fusionner les deux tableaux de la manière la plus élégante qui soit. (1~point).
\exequest Fusionner les deux tableaux de la mani�re la plus �l�gante qui soit. (1~point).


\end{xexercice}
Expand All @@ -101,19 +101,19 @@
\newpage

\exosubject{}
\begin{xexercice}\label{td_note_label6_2016}%\indexfrr{énoncé}{pratique}
\begin{xexercice}\label{td_note_label6_2016}%\indexfrr{�nonc�}{pratique}


\exequest Michel perd souvent ses carnets de numéros et pour éviter d'importuner ses proches de recevoir des coups de fils impromptus, il utilise un code très simple. On découpe un numéro de téléphone par groupe de deux chiffres. Si la première lettre est une voyelle, il permute le groupe 2 avec le groupe 3 sinon il les laisse en l'état. Si la seconde lettre est une voyelle, il permute le groupe 3 et 4, rien en cas de consonnes. On ne fait rien si la lettre associée au dernier groupe est une voyelle.
\exequest Michel perd souvent ses carnets de num�ros et pour �viter d'importuner ses proches de recevoir des coups de fils impromptus, il utilise un code tr�s simple. On d�coupe un num�ro de t�l�phone par groupe de deux chiffres. Si la premi�re lettre est une voyelle, il permute le groupe 2 avec le groupe 3 sinon il les laisse en l'�tat. Si la seconde lettre est une voyelle, il permute le groupe 3 et 4, rien en cas de consonnes. On ne fait rien si la lettre associ�e au dernier groupe est une voyelle.

\begin{verbatimx}
adele 06 64 34 22 67
aa dd ee ll

Etape 1 06 34 64 22 67 on permute 64 et 34 car le groupe 64 est associé à la lettre a
Etape 2 06 34 64 22 67 on ne fait rien car le groupe 34 est associé à la lettre d
Etape 3 06 34 64 67 22 on permute 22 et 67 le groupe 22 est associé à la lettre e
Etape 4 06 34 64 67 22 on ne fait rien car le groupe 34 est associé à la lettre l
Etape 1 06 34 64 22 67 on permute 64 et 34 car le groupe 64 est associ� � la lettre a
Etape 2 06 34 64 22 67 on ne fait rien car le groupe 34 est associ� � la lettre d
Etape 3 06 34 64 67 22 on permute 22 et 67 le groupe 22 est associ� � la lettre e
Etape 4 06 34 64 67 22 on ne fait rien car le groupe 34 est associ� � la lettre l
\end{verbatimx}

Un autre exemple :
Expand All @@ -123,12 +123,12 @@
gerard 06 64 34 22 68 --> 06 64 22 34 68 lettres 06 gg ee rr aa
\end{verbatimx}

Ecrire la fonction qui transforme un numéro. Il est recommandé de ne pas tenir compte des espaces. (2~points)
Ecrire la fonction qui transforme un num�ro. Il est recommand� de ne pas tenir compte des espaces. (2~points)

\exequest Ecrire la fonction qui effectue la transformation inverse. (2~points)


\exequest Est-ce que cela fonctionne pour le prénom \texttt{Maude} qui contient deux voyelles consécutives ? Peut-on encore retrouver le numéro codé ? (1~point)
\exequest Est-ce que cela fonctionne pour le pr�nom \texttt{Maude} qui contient deux voyelles cons�cutives ? Peut-on encore retrouver le num�ro cod� ? (1~point)


\end{xexercice}
Expand Down
6 changes: 3 additions & 3 deletions _todo/data/court_chemin/distance_ville.py
Expand Up @@ -54,15 +54,15 @@ def get_distance_ville(v1, v2, engine):
try:
x = static_google_maps.directions(v1, v2)
except googlemaps.GoogleMapsError, e:
raise Exception("unable to get direction for " +
raise RuntimeError("unable to get direction for " +
v1 + "," + v2 + "\n" + str(e))
r = str(x)
else:
raise Exception("choose an engine in [ mappy, cara, googlemaps ]")
raise RuntimeError("choose an engine in [ mappy, cara, googlemaps ]")

rl = r.lower()
if v1.lower() not in rl or v2.lower() not in rl:
raise Exception(
raise RuntimeError(
"unable to find cities from url\n" + url + "\n" + r)

f = codecs.open(file, "w", "utf-8")
Expand Down
2 changes: 1 addition & 1 deletion _todo/data/court_chemin/importme.py
Expand Up @@ -32,7 +32,7 @@ def import_module(name, moduleName=None, url=None, glo=globals(), loc=locals()):
u = urllib.urlopen(url, "r")
all = u.read()
if "404 Not Found" in all:
raise Exception("fichier introuvable")
raise RuntimeError("fichier introuvable")
u.close()
u = open(file, "w")
u.write(all)
Expand Down
16 changes: 8 additions & 8 deletions _todo/data/court_chemin/td.py
Expand Up @@ -16,20 +16,20 @@ def drawGraph(edges, script, image):
import struct
files = ["_graphviz_draw.exe"]
if not os.path.exists(files[-1]):
# on télécharge les fichiers nécessaires d'abord
# on t�l�charge les fichiers n�cessaires d'abord
for f in files:
print "téléchargement de ", f
print "t�l�chargement de ", f
url = "http://www.xavierdupre.fr/enseignement/tutoriel_python/graphviz/" + f
u = urllib.urlopen(url, "rb")
all = u.read()
if "404 Not Found" in all:
raise Exception("fichier introuvable")
raise RuntimeError("fichier introuvable")
u.close()
u = open(f, "wb")
u.write(struct.pack("c" * len(all), *all))
u.close()
if not os.path.exists(files[-1]):
raise Exception("mauvais téléchargement")
raise RuntimeError("mauvais t�l�chargement")

if script == None:
li = ["digraph{"]
Expand All @@ -52,17 +52,17 @@ def drawGraph(edges, script, image):

def charge_donnees(file="matrix_distance_7398.txt"):
if os.path.exists(file):
# si le fichier existe (il a déjà été téléchargé une fois)
# si le fichier existe (il a d�j� �t� t�l�charg� une fois)
f = open(file, "r")
text = f.read()
f.close()
else:
# si le fichier nexiste pas
# si le fichier nexiste pas
link = "http://www.xavierdupre.fr/enseignement/td_python/" + \
"python_td_minute/data/court_chemin/" + file
url = urllib.urlopen(link)
text = url.read()
# on enregistre les données pour éviter de les télécharger une seconde fois
# on enregistre les donn�es pour �viter de les t�l�charger une seconde fois
f = open(file, "w")
f.write(text)
f.close()
Expand Down Expand Up @@ -94,7 +94,7 @@ def graphviz_script(mat_dict):
i1 = vertex[k[0]]
i2 = vertex[k[1]]
if i1 < i2 and v < 15000:
# on coupe des arcs car le tracé est trop long sinon
# on coupe des arcs car le trac� est trop long sinon
script.append("%d -- %d [label=\"%skm\"];" % (i1, i2, v / 1000))
script.append("}")
return "\n".join(script)
Expand Down
20 changes: 10 additions & 10 deletions _todo/data/hasard/hasard_test.py
@@ -1,7 +1,7 @@
# coding:latin-1
"""
On cherche à comparer deux fonctions qui simulent une variable aléatoire multinomiale.
Elles utilisent deux fonctions différentes simulant une loi uniforme différente.
On cherche comparer deux fonctions qui simulent une variable al�atoire multinomiale.
Elles utilisent deux fonctions diff�rentes simulant une loi uniforme diff�rente.
"""

chideux_table = [3.84, 5.99, 7.82, 9.49, 11.07,
Expand All @@ -13,9 +13,9 @@


def tirage_entier(proba):
"""tire un nombre aléatoire entre 1 et len(proba)
selon la distribution indiquée par proba
on suppose que chaque valeur * 100 est entière"""
"""tire un nombre al�atoire entre 1 et len(proba)
selon la distribution indiqu�e par proba
on suppose que chaque valeur * 100 est enti�re"""
r = random.randint(1, 10)
x = 0
i = 0
Expand All @@ -24,12 +24,12 @@ def tirage_entier(proba):
if r <= x:
return i + 1
i += 1
raise Exception("impossible a priori sauf si sum(proba) != 1")
raise RuntimeError("impossible a priori sauf si sum(proba) != 1")


def tirage_reel(vecteur):
"""tire un nombre aléatoire entre 1 et len(vecteur)
selon la distribution indiquée par vecteur"""
"""tire un nombre al�atoire entre 1 et len(vecteur)
selon la distribution indiqu�e par vecteur"""
a = random.uniform(0, 1)
p = 0
k = 1
Expand All @@ -54,7 +54,7 @@ def tirages(N, fonction, proba):


def chideux(cont, proba):
"""calcul le chi deux entre la distribution simulée et la distribution théorique"""
"""calcul le chi deux entre la distribution simul�e et la distribution th�orique"""
s = 0
t = sum(cont.values())
for i, v in enumerate(proba):
Expand Down Expand Up @@ -113,7 +113,7 @@ def tiragesT(T, N, fonction, p1, p2, p3):

def proba2_th(t, p1, p2, p3):
"""
retourne la probabilité théorique de distribution du tirage t
retourne la probabilit� th�orique de distribution du tirage t
"""
if t == 1:
return p1
Expand Down
4 changes: 2 additions & 2 deletions _todo/solution/graph/importme.py
Expand Up @@ -23,11 +23,11 @@ def import_module (name, moduleName = None, url = None, glo = globals(), loc = l
else :
if url == None : url = "http://www.xavierdupre.fr/enseignement/tutoriel_python/graphviz/"
url += file
print "téléchargement de ", url
print "t�l�chargement de ", url
u = urllib2.urlopen (url, "r")
all = u.read ()
if "404 Not Found" in all and 'if "404 Not Found" in all :' not in all :
raise Exception ("fichier introuvable: " + name )
raise RuntimeError("fichier introuvable: " + name )
u.close ()
u = open (file, "w")
u.write ( all )
Expand Down
8 changes: 4 additions & 4 deletions _todo/solution/graph/use_graphivz.py
Expand Up @@ -3,20 +3,20 @@ def import_Graphviz () :
import os, urllib,struct
files = [ "_graphviz_draw.exe"]
if not os.path.exists (files[-1]) :
# on télécharge les fichiers nécessaires d'abord
# on t�l�charge les fichiers n�cessaires d'abord
for f in files :
print "téléchargement de ", f
print "t�l�chargement de ", f
url = "http://www.xavierdupre.fr/enseignement/tutoriel_python/graphviz/" + f
u = urllib.urlopen (url, "rb")
all = u.read ()
if "404 Not Found" in all :
raise Exception ("fichier introuvable")
raise RuntimeError("fichier introuvable")
u.close ()
u = open (f, "wb")
u.write ( struct.pack ("c"*len(all), *all))
u.close()
if not os.path.exists (files[-1]) :
raise Exception ("mauvais téléchargement")
raise RuntimeError("mauvais t�l�chargement")
return files

def drawDiGraph (text, image) :
Expand Down
6 changes: 3 additions & 3 deletions _unittests/ut_automation/test_SKIP_simpleserver_rss_ensae.py
Expand Up @@ -54,7 +54,7 @@ def test_server_start_run(self):
url = "http://localhost:8093/"
cont = get_url_content_timeout(url)
# if "Traceback" in cont and not "l''exception :: Traceback" in cont:
# raise Exception(cont)
# raise AssertionError(cont)
assert len(cont) > 0
assert "RSS" in cont
assert "XD blog" in cont
Expand All @@ -63,11 +63,11 @@ def test_server_start_run(self):
url = "http://localhost:8093/rss_search.html?searchterm=command"
cont = get_url_content_timeout(url)
if cont is None:
raise Exception("cond is None for url: " + str(url))
raise AssertionError("cond is None for url: " + str(url))
if "Traceback" in cont:
fLOG(cont)
# if "Traceback" in cont and not "l''exception :: Traceback" in cont:
#raise Exception(cont)
#raise AssertionError(cont)
assert len(cont) > 0
assert "RSS" in cont
assert "interesting" not in cont
Expand Down
Expand Up @@ -37,7 +37,7 @@ def test_enumerate_feedback(self):
f.write(m[1])
if i < len(exp):
if exp[i] not in m[1]:
raise Exception(f"EXP\n{exp[i]}\nRES\n{m[1]}")
raise AssertionError(f"EXP\n{exp[i]}\nRES\n{m[1]}")

def test_enumerate_send_email(self):
fLOG(
Expand Down

0 comments on commit 9f4898f

Please sign in to comment.