Tuto PySDur de freezed
Prérequis
- Avoir déja les bases de scripting avec Python
Intro
Le meilleur script est celui que l'on peut comprendre/modifier sans l'avoir utilisé pendant plus de 6 mois.
La bibliothèque standard Python comporte tout ce qu'il faut pour y arriver, moyennant relativement peu d'effort un peu d'habitudes.
Support
Ce tuto utilisera comme base un algorithme déterminant le plus grand diviseur commun (PGCD), par soustractions successives :
Soient a et b deux entiers naturels non nuls avec
a > b
Alors :
PGCD(a;b)
=PGCD(b;a−b)
Cette méthode est chaînable et donc se scripte facilement. Exemple avec la recherche de PGCD(561;357)
:
561 - 357 = 204
357 - 204 = 153
204 - 153 = 51
153 - 51 = 102
102 - 51 = 51
51 - 51 = 0
- Donc :
PGCD(561;357) = 51
À faire
- Base
-
Créer un nouveau dépôt free_zed/tuto-pysdur
-
Lire docs.gitlab
-- Closing issues automatically -
Lire docs.gitlab
-- Autocomplete characters-
🔊 Lier chaque commit à ce ticket (issue) : minimum un commit par étape (case à cocher)
-
-
Lire PEP 257 -- Docstring Conventions -
Décrire clairement l'objectif du script en quelques mots/lignes avec des docstring
en en-tête de module et de fonction
-
- Code & test
-
Implémenter l'algorithme dans une fonction prenant en paramètre un couple d'entier décroissant, la réponse affiche juste le résultat final en console -
Lire doctests
-- Test interactive Python examples (s'arrêter avant Basic API devrait suffir) -
Ajouter quelques doctests
pour tester le comportement de la fonction
-
- Arguments documentés
-
Lire le 1er chapitre Exemples de argparse
-- Parseur d'arguments, d'options, et de sous-commandes de ligne de commande - Utiliser le module
argparse
pour ajouter des argument à votre code :-
Argument positionnel : une paire d'entier ( a
&b
) -
Argument optionnel ( -v, --verbose
) affiche la réponse complète :PGCD(a;b) = c
-
Utiliser la docstring du module dans l'affichage de l'aide
-
-
- Journalisation (logging)
-
Lire Les bases de l'utilisation du module logging - Ajouter des événements à message statique du type :
-
CRITICAL
: quand les arguments sont donné dans l'ordre croissant -
INFO
: quand la fonction est appelée -
DEBUG
: à chaque soustraction
-
-
Remplacer les messages ci-dessus par des messages variables - Ajouter un argument qui :
-
affiche en console tous les types d'évènements ( -d, --debug
) -
écrit dans un fichier .log
(dans le dossier courant) et n'affiche rien en console (-l, --logfile
)
-
-
- Fin
-
Supprimer les messages parasite du shell (ex. : <mon_shell>: exit 2 python3 pgcd.py
) -
Proposer une amélioration (au moins) du modèle de ce tutorat -
Clore ce ticket (issue)
-
Suite
Ce ticket (issue) terminé, on peut passer à la découverte de :
-
🍻 Merci Vincent Bernat pour son blog post qui a complètement inspiré ce tuto (🇫🇷 |🇬🇧 ).
/cc @All
Edited by freezed