GNU/Linux Magazine Hors-série N°
Numéro
95

Mémo Python - Saison 2 : 59 nouvelles recettes pour accélérer vos développements !

Temporalité
Mars/Avril 2018
Image v3
Mémo Python - Saison 2 : 59 nouvelles recettes pour accélérer vos développements !
Article mis en avant

Dans ce numéro...


L'objectif : Nous disposons d'un nombre entier ou réel et nous souhaitons obtenir son arrondi à la dizaine supérieure ou inférieure.
L'objectif : Nous voulons définir des constantes « protégées » (i.e. qui ne pourront pas être écrasées) nous permettant de décrire des éléments de configuration d'un programme : mode debugage activé ou non, mode verbeux, chemin vers un modèle, etc.
L'objectif : Nous disposons d'une chaîne de caractères contenant la représentation d'un tuple sous la forme '(1, 2, 3, 4)' et nous souhaitons la convertir en tuple d'entiers (1, 2, 3, 4).
L'objectif : Nous possédons un dictionnaire où les clés sont des tuples : dico = {('Jon', 'Snow') : 12, ('Daenerys', 'Targaryen') : 16, ('Cersei', 'Lannister') : 10, ('Jaime', 'Lannister') : 18}
L'objectif : Nous possédons une liste des notes de différents étudiants où chaque note est stockée sous la forme d'un dictionnaire possédant des clés prenom, nom et note : students = [{'prenom' : 'Juliana', 'nom' : 'Crain', 'note' : 12}, {'prenom' : 'Joe', 'nom' : 'Blacke', 'note' : 15}, {'prenom' : 'Frank', 'nom' : 'Frink', 'note' : 8}] Nous souhaitons ne garder que les personnes dont les notes sont supérieures à la moyenne.
L'objectif : Nous voulons stocker deux octets de valeur 2 et 4, et réaliser diverses opérations : décalage à gauche de 2 bits sur le premier octet, somme des deux octets et multiplication des deux octets.
L'objectif : Nous disposons d'une variable de type bytes (représentation en hexadécimal) contenant un octet et nous souhaitons obtenir sa représentation sous forme de 0 et de 1.
L'objectif : Nous voulons qu'une fonction cleanAll() réalisant différentes opérations de nettoyage soit appelée automatiquement en sortie d'un programme.
L'objectif : Demander à un utilisateur de saisir un mot de passe sans que ce dernier ne s'affiche à l'écran.
L'objectif : Nous disposons d'une chaîne de caractères du type '011101000010001010001000011101010' et nous souhaitons la découper de manière à obtenir des chaînes de 8 caractères.
L'objectif : Nous voulons écrire rapidement une interface CLI pour un projet et nous souhaitons que les utilisateurs puissent disposer de l'autocomplétion pour les aider dans leur utilisation de notre interface.
L'objectif : Nous disposons d'une chaîne de caractères quelconque 'aaaaaaabbbccdeeeeffggggghhhi' et nous souhaitons connaître le nombre d'occurrences des lettres qui la composent.
L'objectif : Formater simplement une chaîne de caractère pour y intégrer des données issues de variables. Par exemple, nous voulons afficher proprement pour un cercle son identifiant (nom donné arbitrairement), les coordonnées de son centre et son périmètre.
L'objectif : Nous disposons d'une liste de chaînes de caractères et pour optimiser un affichage, nous souhaitons les grouper par taille.
L'objectif : Nous disposons d'une DataFrame Pandas (peut importe comment les données ont été obtenues), et nous souhaitons effectuer des opérations sur les colonnes.
L'objectif : Nous disposons d'une DataFrame contenant des cellules vides
L'objectif : Nous disposons d'un fichier CSV dont certaines lignes ne sont pas remplies complètement
L'objectif : Nous devons tester de nombreux couples de valeurs pour savoir lesquels sont égaux, lesquels sont plus grands, etc.
L'objectif : Nous disposons d'une liste très longue dans laquelle il faut que nous isolions les premier, avant-dernier et dernier élément et que nous récupérions les autres éléments sous forme de liste.
L'objectif : Dans un dictionnaire, on essaye parfois d'accéder en lecture ou en écriture à des clés qui n'existent pas.
L'objectif : Nous voulons afficher un à un tous les éléments de trois listes distinctes sans pour autant écrire trois boucles.
L'objectif : Nous affichons des données graphiques (ici un rectangle de couleur) dans une fenêtre graphique Pygame et nous voulons faire évoluer l'affichage sans saccade et de manière fluide.
L'objectif : Nous souhaitons utiliser la toute dernière version de Python disponible.
L'objectif : Nous voulons afficher à l'écran le contenu d'une variable complexe de manière à ce que celle-ci soit le plus lisible possible.
L'objectif : Nous disposons d'une classe Java fonctionnelle et nous souhaitons l'employer dans un script Python sans la recoder.
L'objectif : Dans le cadre d'un projet Python, nous souhaitons documenter proprement de code.
L'objectif : Pour optimiser un script, nous souhaitons réécrire l'une des fonctions en C. Ici ce sera une fonction toute simple permettant de calculer une factorielle.
L'objectif : Nous souhaitons utiliser une fonction Fortran existante dans un code Python.
L'objectif : Tout programme Python est compilé en Bytecode, mais tous ne sont pas enregistrés (les fichiers .pyc dans les répertoires __pycache__). Nous disposons d'un programme Python et nous voulons forcer sa compilation et sa sauvegarde en Bytecode.
L'objectif : Lorsqu'une convention de codage existe, il est toujours mieux de s'y conformer. Pour Python, la norme se nomme PEP 8 (https://www.python.org/dev/peps/pep-0008/) et il est pratique de pouvoir avoir un logiciel qui nous indique quels points nous n'avons pas respecté.
L'objectif : Utiliser un outil regroupant les fonctionnalités de pip et de virtualenv pour créer et gérer des environnements virtuels.
L'objectif : Nous nous demandons quelles sont les conséquences réelles de la modification du code
L'objectif : Nous souhaitons stocker simplement des objets Python pour les réutiliser ultérieurement
L'objectif : présenter du code ou des fonctionnalités de Python de manière interactive.
L'objectif : Nous disposons d'une fonction particulièrement longue à exécuter et que nous devons appeler plusieurs fois.
L'objectif : Plusieurs versions de Python sont installées sur notre système : Python 2.7.9 (commande python par défaut), Python 3.4.2 (commande python3 par défaut), Python 3.6.3, etc. Nous voulons installer un module nomModule dans Python 3.6.3.
L'objectif : Nous développons un petit script et souhaitons obtenir un affichage montrant quelles sont les parties les plus lentes du code. Notre script va calculer la suite de Fibonacci.
L'objectif : Disposant d'un modem 3G (je prendrai un Huawei E169 comme exemple), nous souhaitons pouvoir envoyer des SMS depuis un script Python.
L'objectif : Disposant d'un modem 3G (ici Huawei E169 pour l'exemple), nous voulons analyser des SMS qui nous sont envoyés.
L'objectif : Possédant un compte Gmail glmf@gmail.com, nous voulons l'utiliser pour envoyer un e-mail depuis un script Python.
L'objectif : Nous souhaitons accéder aux évènements de l'agenda MesRDV sur Google Calendar (associé au compte moi@gmail.com).
L'objectif : Le Web regorge d'informations. Nous voulons récupérer le tableau récapitulatif du classement de Ligue 1 sur http://www.lfp.fr/ligue1/classement, ce qui nous permettra de stocker les données au format CSV pour effectuer par exemple des calculs statistiques par la suite.
L'objectif : Récolter la liste des articles des derniers numéros standard et hors-séries de GNU/Linux Magazine sur https://connect.ed-diamond.com/GNU-Linux-Magazine.
L'objectif : À des fins de test, nous voulons simuler le comportement d'un utilisateur sur une page web. Nous allons effectuer une recherche sur le terme « python » sur la page https://boutique.ed-diamond.com/.
L'objectif : Dans un gros projet, nous nous apercevons que notre programme consomme beaucoup de mémoire et nous souhaiterions pouvoir libérer simplement et rapidement un peu de mémoire.
L'objectif : Nous disposons de plusieurs décorateurs que nous souhaitons appliquer sur une même fonction.
L'objectif : Nous possédons une classe Nombre qui contient un attribut nb stockant un réel
L'objectif : Créer une classe dans laquelle on empile des valeurs et qui affiche le total en sortie de bloc with.
L'objectif : Sur un générateur, obtenu par exemple par compréhension de liste, il est impossible d'appliquer le slicing
L'objectif : Les boucles de type do… while n'existent pas en Python. Comment obtenir alors le même comportement ?
L'objectif : Écrire une structure conditionnelle ayant la même construction qu'un switch en C
L'objectif : Nous souhaitons associer aux éléments d'une liste un compteur sans que cela vienne alourdir notre programme avec la gestion d'une variable supplémentaire.
L'objectif : Mettre en place le patron de conception « Chaîne de responsabilité » qui permet à des classes d'essayer de répondre à une requête sans connaître les possibilités des autres classes sur cette requête. Nous voulons créer un filtre qui, en fonction de la donnée qui lui est transmise : - s'il s'agit d'une chaîne de caractères non convertible en entier retourne cette chaîne en majuscules ; - s'il s'agit d'un entier ou d'une chaîne de caractères convertible en entier retourne le double de cet entier.
L'objectif : Mettre en place le patron de conception « Mémento » qui permet à un objet de restaurer son état précédent (les valeurs de ses attributs), sans violer le principe de l'encapsulation. Nous sauvegarderons ici l'historique d'un attribut value.
L'objectif : Mettre en place le patron de conception « Adapter » permettant de convertir l'interface d'une classe en une autre interface attendue par le client.
L'objectif : Mettre en place le patron de conception « Facade » permettant de masquer une interface complexe qui sera ainsi utilisée de manière beaucoup plus simple. Nous allons développer une classe DateSimple qui sera une façade à l'utilisation du module datetime. Nous n'implémenterons ici que la méthode getToday() qui donnera la date du jour en précisant le jour de la semaine en français.
L'objectif : Mettre en place le patron de conception « Strategy » permettant de sélectionner quel type d'algorithme employer avec un objet donné.
L'objectif : Mettre en place le patron de conception « Factory Method » permettant de fabriquer des objets à partir d'une classe déléguant la création des objets proprement dits à des sous-classes. Nous prendrons comme cas d'étude une classe Geometrie à laquelle nous pourrons demander de créer des objets Cercle ou Carre.
L'objectif : Nous disposons de la classe suivante

Magazines précédents

Sécurisez votre infrastructure Linux
GNU/Linux-Magazine Hors-série N°93
Sécurisez votre infrastructure Linux
Programmation réseau en Python
GNU/Linux-Magazine Hors-série N°90
Programmation réseau en Python
Maîtrisez la programmation de scripts Shell
GNU/Linux-Magazine Hors-série N°89
Maîtrisez la programmation de scripts Shell

Les derniers articles Premiums

Les derniers articles Premium

De la scytale au bit quantique : l’avenir de la cryptographie

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Imaginez un monde où nos données seraient aussi insaisissables que le célèbre chat de Schrödinger : à la fois sécurisées et non sécurisées jusqu'à ce qu'un cryptographe quantique décide d’y jeter un œil. Cet article nous emmène dans les méandres de la cryptographie quantique, où la physique quantique n'est pas seulement une affaire de laboratoires, mais la clé d'un futur numérique très sécurisé. Entre principes quantiques mystérieux, défis techniques, et applications pratiques, nous allons découvrir comment cette technologie s'apprête à encoder nos données dans une dimension où même les meilleurs cryptographes n’y pourraient rien faire.

Les nouvelles menaces liées à l’intelligence artificielle

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Sommes-nous proches de la singularité technologique ? Peu probable. Même si l’intelligence artificielle a fait un bond ces dernières années (elle est étudiée depuis des dizaines d’années), nous sommes loin d’en perdre le contrôle. Et pourtant, une partie de l’utilisation de l’intelligence artificielle échappe aux analystes. Eh oui ! Comme tout système, elle est utilisée par des acteurs malveillants essayant d’en tirer profit pécuniairement. Cet article met en exergue quelques-unes des applications de l’intelligence artificielle par des acteurs malveillants et décrit succinctement comment parer à leurs attaques.

Migration d’une collection Ansible à l’aide de fqcn_migration

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Distribuer du contenu Ansible réutilisable (rôle, playbooks) par l’intermédiaire d’une collection est devenu le standard dans l’écosystème de l’outil d’automatisation. Pour éviter tout conflit de noms, ces collections sont caractérisées par un nom unique, formé d’une espace de nom, qui peut-être employé par plusieurs collections (tel qu'ansible ou community) et d’un nom plus spécifique à la fonction de la collection en elle-même. Cependant, il arrive parfois qu’il faille migrer une collection d’un espace de noms à un autre, par exemple une collection personnelle ou communautaire qui passe à un espace de noms plus connus ou certifiés. De même, le nom même de la collection peut être amené à changer, si elle dépasse son périmètre d’origine ou que le produit qu’elle concerne est lui-même renommé.

Body