Oubliez flake8, black ou venv, place aux outils de nouvelle génération !
Meetup Python Bordeaux Après quelques années d’absence, le meetup Python Bordeaux reprend vie : https://www.meetup.com/py-bdx/events/300614701/. Pour cette reprise, je me suis proposé pour faire un talk nommé : Oubliez flake8, black ou venv, place aux outils de nouvelle génération ! Le tout devant une cinquantaine de personnes passionnées de Python. J’y montre l’utilité des environnements virtuels, des linters et formateurs de code. Et je présente de nouveaux outils faits par https://astral.
par Vincent Poulailleau
Je publie sur LinkedIn
Je passe à LinkedIn LinkedIn permet de se créer une communauté. Je me suis donc lancé à publier sur LinkedIn. Et je ne publie presque plus ici. Vous pourrez trouver tous mes posts en vous abonnant à mon contenu. Mon profil est directement accessible ici : https://www.linkedin.com/in/vpoulailleau/. J’essaye de publier au moins deux posts par semaine, majoritairement sur du Python. Je vous attends là-bas avec impatience. N’hésitez-pas à commenter les posts, l’interaction est enrichissante.
par Vincent Poulailleau
Simple is better than complex
Introduction Je vois passer un post sur LinkedIn qui dit : faites le code le plus simple pour afficher : * ** *** **** ***** **** *** ** * Spoiler : ma solution est à la fin et aussi en image. Parmi les réponses que les lecteurs ont fournies (oui, elles ont réellement été proposées), en voici quelques-unes. Solution intuitive pour les débutants 1 2 3 4 for i in range(6): print('*' * i) for i in range(4, 0, -1): print('*' * i) Autre solution moins intuitive, mais compréhensible par les débutants 1 2 3 4 5 for i in range(10): if i <= 5: print('*' * i) else: print('*' * (10 - i)) Solution de la personne payée au nombre de caractères 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 def print_row(n): print("* " * n) def print_top_half(n): for row in range(1, n + 1): print_row(row) def print_bottom_half(n): for row in range(n - 1, 0, -1): print_row(row) def print_triangle(n): print_top_half(n) print_bottom_half(n) triangle_height = 5 print_triangle(triangle_height) Solution sans if 1 2 3 4 5 6 def pyramid(height): for num in range(1, 2 * height + 1): print('*' * min(num, 2 * height - num)) pyramid(5) Solution logique, mais difficile à lire au premier coup d’œil 1 print(*(("* " * x) for x in range(1, 5)), *(("* " * x) for x in range(5, 0, -1)), sep='\n') Solution rusée, mais difficile à lire au premier coup d’œil 1 2 3 from itertools import chain print(*(("* " * x) for x in chain(range(1, 5), range(5, 0, -1))), sep='\n') Un peu dans la même idée 1 2 3 4 5 6 7 8 def print_pattern(): counts = list(range(1,6)) # [1, 2, 3, 4, 5] counts += list(range(4,0,-1)) # [1, 2, 3, 4, 5] + [4, 3, 2, 1] strs = list(map(lambda c: print("*" * c), counts)) print("\n".
par Vincent Poulailleau
Certifié en Python avec une note de 1000/1000
Certification API Society J’ai eu une note de 1000/1000 à une certification Python. Pour tout dire, mon objectif était d’avoir le niveau « Instructeur », ce qui m’autorise à animer des formations préparant à cette certification. Je parle de https://api-society.com/fr/certifications/technologies-numeriques/developpement-logiciel/fondamentaux-python, certification reconnue par l’état (France Compétences : https://www.francecompetences.fr/recherche/rs/6301/). Les objectifs sont d’attester que vous maîtrisez les bases de Python (types de données basiques, if et boucles, fonctions, modules, paquets, programmation orientée objet, et un peu de la bibliothèque standard).
par Vincent Poulailleau
Unicode, c'est simple sauf quand c'est compliqué
Unicode, le problème Unicode, c’est simple sauf quand c’est compliqué ! Oui, le texte « Python est génial » n’est pas le même que « Python est génial ». Pourtant il s’affiche pareil ! 1 2 3 4 5 6 7 8 9 10 11 from unicodedata import name, normalize texte1 = "Python est génial" texte2 = "Python est génial" print(texte1 == texte2) # False, WTF! print(texte1.encode("utf-8")) # b'Python est g\xc3\xa9nial' print(texte2.
par Vincent Poulailleau