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

La place de l’Intelligence Artificielle dans les entreprises

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

L’intelligence artificielle est en train de redéfinir le paysage professionnel. De l’automatisation des tâches répétitives à la cybersécurité, en passant par l’analyse des données, l’IA s’immisce dans tous les aspects de l’entreprise moderne. Toutefois, cette révolution technologique soulève des questions éthiques et sociétales, notamment sur l’avenir des emplois. Cet article se penche sur l’évolution de l’IA, ses applications variées, et les enjeux qu’elle engendre dans le monde du travail.

Petit guide d’outils open source pour le télétravail

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

Ah le Covid ! Si en cette période de nombreux cas resurgissent, ce n’est rien comparé aux vagues que nous avons connues en 2020 et 2021. Ce fléau a contraint une large partie de la population à faire ce que tout le monde connaît sous le nom de télétravail. Nous avons dû changer nos habitudes et avons dû apprendre à utiliser de nombreux outils collaboratifs, de visioconférence, etc., dont tout le monde n’était pas habitué. Dans cet article, nous passons en revue quelques outils open source utiles pour le travail à la maison. En effet, pour les adeptes du costume en haut et du pyjama en bas, la communauté open source s’est démenée pour proposer des alternatives aux outils propriétaires et payants.

Sécurisez vos applications web : comment Symfony vous protège des menaces courantes

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

Les frameworks tels que Symfony ont bouleversé le développement web en apportant une structure solide et des outils performants. Malgré ces qualités, nous pouvons découvrir d’innombrables vulnérabilités. Cet article met le doigt sur les failles de sécurité les plus fréquentes qui affectent même les environnements les plus robustes. De l’injection de requêtes à distance à l’exécution de scripts malveillants, découvrez comment ces failles peuvent mettre en péril vos applications et, surtout, comment vous en prémunir.

Bash des temps modernes

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

Les scripts Shell, et Bash spécifiquement, demeurent un standard, de facto, de notre industrie. Ils forment un composant primordial de toute distribution Linux, mais c’est aussi un outil de prédilection pour implémenter de nombreuses tâches d’automatisation, en particulier dans le « Cloud », par eux-mêmes ou conjointement à des solutions telles que Ansible. Pour toutes ces raisons et bien d’autres encore, savoir les concevoir de manière robuste et idempotente est crucial.

Body