CC-241017 Science des données

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)
  1. Transcrire en python cet algorithme dans la fonction pgcd(a, b) dans un fichier euclide.py.

  2. 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)\).

  3. 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).

  4. Dans le même fichier, écrire une fonction lire2entiers() qui lit et retourne deux entiers positifs sur la ligne de commande (utiliser sys.argv).

  5. Compléter la fonction lire2entiers() pour générer

    • une exception de type IOError si la ligne de commande ne contient pas (au moins) deux arguments (seuls les deux premiers sont utilisés),

    • une exception de type TypeError si (au moins) l’un des deux arguments n’est pas coercible en entier,

    • une exception de type ValueError si (au moins) l’un des deux entiers n’est pas strictement positif.

Packaging🔗

  1. Créez un package euclide_nom_prenom constitué du seul module euclide.py pré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):

  2. 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
    
  3. Ajoutez deux points d’entrée pgcd et ppcm à 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.)

  4. Finalement, commit/push toutes vos modifications sur votre répo central git, 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.