Notebook originel: cc_241017.ipynb
CC-241017 Science des données🔗
Date: 17 octobre 2024 Durée: 1 h
Consignes🔗
Créez un répertoire CC241017_Nom_Prenom/ dans lequel vous travaillerez, et où sera stocké le package python en développement, selon les instructions ci-dessous.
Vous devez alors mettre ce répertoire sous contrôle git sur un projet dédié sur le serveur https://gitlab.in2p3.fr, et en transmettre l’adresse à y.copin@ipnl.in2p3.fr.
Si, par manque de temps ou de connaissance, vous ne pouvez pas créer un dépôt git, envoyez par mail la distribution source du package voir ci-dessous) à y.copin@ipnl.in2p3.fr (cette solution sera pénalisée dans la notation).
Dans tous les cas, vous devez envoyer quelque chose!
Algorithme d’Euclide🔗
Pour déterminer le Plus Grand Commun Diviseur (PGCD) de deux entiers positifs \(a\) et \(b\), l”algorithme d’Euclide (dans sa version originale) s’exprime de la façon suivante (pseudo-code):
fonction pgcd(a, b)
tant que a ≠ b (boucle)
si a > b alors (test)
a ← a − b (assignation)
sinon
b ← b − a;
renvoyer a (conclusion)
Transcrire en python cet algorithme dans la fonction
pgcd(a, b)dans un fichiereuclide.py.Ajouter une fonction
ppcm(a, b)permettant de calculer l’entier Plus Petit Commun Multiple (PPCM) des deux entiers positifs \(a\) et \(b\), en notant que \(\text{PPCM}(a, b) = a \times b / \text{PGCD}(a, b)\).Dans le même fichier, écrire un block
__main__pour tester les deux fonctions sur les entiers 756 et 306 (le PDGC est 18, et le PPCM 12852).Dans le même fichier, écrire une fonction
lire2entiers()qui lit et retourne deux entiers positifs sur la ligne de commande (utiliser sys.argv).Compléter la fonction
lire2entiers()pour générerune exception de type
IOErrorsi la ligne de commande ne contient pas (au moins) deux arguments (seuls les deux premiers sont utilisés),une exception de type
TypeErrorsi (au moins) l’un des deux arguments n’est pas coercible en entier,une exception de type
ValueErrorsi (au moins) l’un des deux entiers n’est pas strictement positif.
Packaging🔗
Créez un package
euclide_nom_prenomconstitué du seul moduleeuclide.pyprécédent, avec l’arborescence suivante:CC241017_Nom_Prenom/ ├── euclide_nom_prenom │ ├── euclide.py │ └── __init__.py ├── setup.cfg └── setup.py
avec les fichiers suivants (à adapter si nécessaire):
En utilisant les fonctions définies à la partie précédente, ajoutez un fichier
__main__.pyà votre package pour pouvoir exécuter:$ python -m euclide 756 306 18
Ajoutez deux points d’entrée
pgcdetppcmà votre package pour pouvoir exécuter:$ pgcd 756 306 18 $ ppcm 756 306 12852
(Vous pouvez créer de nouvelles fonctions intermédiaires si nécessaire.)
Finalement,
commit/pushtoutes vos modifications sur votre répo centralgit, et envoyer l’adresse de ce répo à y.copin@ipnl.in2p3.fr.Si vous n’avez pas réussi à stocker votre package sous
git, générer une distribution des sources de votre package avec la commande$ python setup.py sdist
et envoyer l’archive correspondante (générée sous
dist/) à y.copin@ipnl.in2p3.fr.Si vous n’avez pas non plus réussi à configurer votre package, générer manuellement une archive de votre package:
$ tar cvzf CC241017_NOM_Prenom.tgz CC241017_NOM_Prenom/
et envoyer le tarball.
[ ]:
Cette page a été générée à partir de
cc_241017.ipynb.