Tutoriels de Pythonia

Guides, IA, tutos et newsletter pour devenir une bête en programmation

Télécharger Apprendre-la-programmation-avec-python

Rejoignez notre communauté de professionnels et de passionnés, pour rester à la pointe des dernières actualités.

Les codes python indispensables

Mis à jour le Feb. 20, 2024, 3:05 p.m.

Niveau: Intermédiaire

Python est un langage de programmation qui a transformé le paysage du développement logiciel, de la science des données, et de l'apprentissage automatique. Grâce à sa syntaxe claire et son approche polyvalente, python s'est imposé comme un outil incontournable pour les débutants souhaitant apprendre la programmation, ainsi que pour les professionnels cherchant à développer des solutions complexes avec efficacité et précision.

 

Pourquoi python?

  • Facilité d'apprentissage : python a été conçu dans l'optique de maximiser la lisibilité du code. Avec une syntaxe simple et une courbe d'apprentissage douce, il est souvent le premier choix pour les nouveaux programmeurs.
  • Polyvalence : que ce soit pour le développement web, l'analyse de données, l'intelligence artificielle, ou la création de scripts automatisés, python offre des solutions robustes et flexibles.
  • Communauté puissante : avec une communauté mondiale de développeurs et d'experts, les ressources pour apprendre et résoudre des problèmes spécifiques sont abondantes et facilement accessibles.
  • Bibliothèques riches : une vaste gamme de bibliothèques et de frameworks, tels que Django pour le développement web, Pandas pour l'analyse de données, et TensorFlow pour l'apprentissage automatique, rendent python extrêmement puissant et polyvalent.

 

Objectif de l'article:
Ce guide vise à vous équiper des codes python indispensables, il est conçu pour vous offrir une compréhension approfondie et pratique des éléments essentiels de python.
Dans les sections suivantes, nous dévoilerons pas à pas les secrets des experts python, vous guidant à travers les éléments qui constituent le cœur de ce langage exceptionnel. Prêt à commencer? Let's go!

Note: tester par vous mêmes les codes disponibles dans cet articles afin de vraiment vous familiariser avec les techniques qui vous sont données.


Utilisation Avancée des Listes
Compréhensions de Listes : Pourquoi et comment les utiliser pour filtrer et transformer les listes en une seule ligne de code.
Affectation Multiple : Comment assigner plusieurs variables en une seule ligne pour améliorer la clarté du code.

Fonctions et Lambdas
Fonctions Lambda : Utilisation dans le filtrage, le tri et la transformation de données.
Décorateurs : Comment et pourquoi encapsuler une fonction pour étendre ses fonctionnalités sans la modifier directement.

Manipulation de Chaînes de Caractères
Expressions Régulières : Snippets pour la validation et la recherche dans les textes.
F-Strings : Pourquoi les utiliser pour formater des chaînes de caractères de manière plus lisible et efficace.

Travailler avec des Dictionnaires
Fusion de Dictionnaires : Techniques pour combiner des dictionnaires en python 3.5+.
Accès aux Valeurs : Utiliser get() et dict.setdefault() pour gérer les valeurs manquantes.

Trucs et Astuces pour les Boucles
Boucles avec enumerate() : Comment l'utiliser pour obtenir l'indice et la valeur dans les boucles for.
Boucles avec zip() : Astuces pour itérer simultanément sur plusieurs séquences.

Gestion des Exceptions
Utilisation de try et except : Gérer élégamment les erreurs et exceptions.
La souplesse des utilisations

Tests et Debugging
Assertions : Comment les utiliser pour vérifier les conditions et faciliter le débogage.
Debugging avec pdb

Conseils de Performance
Générateurs : Pourquoi et comment les utiliser pour améliorer l'efficacité de la mémoire.
__slots__

PEP 8 et au-delà : conseils pour écrire un code pythonique et maintenable.
Conclusion
FAQ


Utilisation avancée des listes

Ah, les listes en python... Ces structures de données qui se plient en quatre pour stocker tout ce que votre cœur de développeur désire. Mais attendez, avant de les réduire à de simples conteneurs, saviez-vous que les listes en python peuvent faire des backflips, préparer le café et probablement résoudre des énigmes anciennes ? Bon, peut-être pas le café, mais elles sont incroyablement puissantes si vous connaissez quelques astuces.


Compréhensions de listes: la poésie en une ligne

Imaginez que vous soyez un artiste et que python est votre toile. Les compréhensions de listes sont ces coups de pinceau élégants qui transforment une opération de boucle lourde (un brouillon) en une elegante œuvre d'art (une unique ligne de code).

 

# Au lieu de ça:
squares = []
for x in range(10):
    squares.append(x**2)

# Faites ça:
squares = [x**2 for x in range(10)]

Élégant, non ? Vous venez d'économiser des lignes et du temps, tout en rendant votre code plus lisible. C'est comme transformer des spaghettis de code en un mikado.


Affectation multiple

L'affectation multiple est cette astuce que vous sortez lors d'une fête pour impressionner vos amis développeurs. python vous permet d'assigner des valeurs à plusieurs variables en une seule ligne. Oui, les one liner, c'est bien :).

a, b, c = 1, 2, 3

Youhou ! Trois variables assignées en une incantation. C'est le genre de magie pythonique qui rend la programmation en python si séduisante.
En maîtrisant ces quelques astuces avancée des listes, vous ne vous contentez pas de coder, vous êtes élegant et efficace. Et qui sait, peut-être qu'après quelques lignes de code, il vous préparera ce café après tout :).


Fonctions et lambdas

Dans l'ombre des structures de données et des boucles infinies, se cachent les véritables héros de nos scripts python: les fonctions et les expressions lambda. Ce sont eux qui apportent l'ordre dans le chaos, qui transforment le complexe en simple, et qui, avouons-le, nous font parfois nous sentir comme des magiciens du code.

Fonctions lambda: le couteau suisse du programmeur

Vous avez déjà eu besoin d'une fonction, mais l'idée de dérouler le tapis rouge pour une fonction complète vous semblait exagérée ? Entrez dans l'arène, les fonctions lambda, ces petites merveilles anonymes qui font le travail en coulisse, sans tout le tralala. Vous pouvez aller dans cette section pour aller plus loin sur les fonctions lambdas.

# Au lieu de ça:
def doubler(x):
    return x * 2

# Essayez ça:
doubler = lambda x: x * 2

 

Décorateurs

Imaginez que vous prépariez vos fonctions pour un bal masqué, leur donnant de nouveaux atours pour l'occasion. Les décorateurs en python vous permettent de faire exactement cela: emballer une fonction existante dans une autre, modifiant ainsi son comportement sans altérer son essence.

def mon_decorateur(func):
    def enveloppe():
        print("Quelque chose se prépare...")
        func()
        print("C'était épique!")
    return enveloppe

@mon_decorateur
def ma_fonction():
    print("Tadaa!")

ma_fonction()

 

Avec un décorateur, ma_fonction ne se contente plus de dire "Tadaa!", elle offre maintenant une performance digne d'une standing ovation. C'est la magie des décorateurs: une pincée de poudre de fée sur votre code pour des effets spectaculaires.
Les fonctions et les lambdas sont les alliés incontournables de tout développeur python. En les maîtrisant, vous débloquez un nouveau niveau de codage, où la clarté rencontre l'efficacité dans un ballet de lignes de code harmonieuses. Prêts à les laisser entrer dans votre code et y faire un peu de magie ?

Manipulation de chaines de caractères

Les chaînes de caractères en python, c'est un peu comme les pâtes dans votre placard. Il y en a de toutes sortes, et avec les bons ingrédients (comprendre: fonctions), vous pouvez transformer un simple "Hello, World!" en un plat étoilé Michelin du développement.

Expressions régulière: pénible à apprendre mais tellement utiles

Les données textuelles sans expressions régulières, c'est comme essayer de pêcher avec une épingle à nourrice. Armé des expressions régulières, vous pouvez capturer, extraire et manipuler des motifs de texte avec la précision d'un chirurgien et la grâce d'un poète (ou d'un troubadour).

import re

# Trouver tous les adjectifs
texte = "Python est incroyable, impressionnant et magique."
adjectifs = re.findall(r"\b\w+e\b", texte)

print(adjectifs)  # ['incroyable', 'impressionnant', 'magique']

 

Avec quelques symboles ésotériques, vous avez créé un filet capable de capturer tous les adjectifs. C'est pas de la magie, ça ? Enfin, un peu quand même.

F-strings: depuis la version 3.6


Les f-strings sont arrivés dans python comme une révolution dans le monde de la mode. Fini le temps des .format() laborieux et des concaténations maladroites. Avec les f-Strings, vous élevez le formatage de texte au rang d'art.

nom = "Guido"
creation = "Python"

message = f"{nom} a créé {creation}."

print(message)  # Guido a créé Python.

Chic, simple, efficace. Les f-Strings sont la petite robe noire du formatage de texte: indispensables et toujours de bon goût.
Jouer avec les chaînes de caractères en python, c'est un peu comme être un magicien des mots. Que vous manipuliez des textes anciens ou que vous insuffliez de la vie à des données brutes, chaque ligne de code est une occasion de démontrer que, parfois, la plume (ou devrais-je dire, le clavier) est plus puissante que l'épée. Prêts à ensorceler le monde avec vos chaînes de caractères ?

Travailler avec des dictionnaires

Les dictionnaires en python, c'est comme un coffre au trésor : plein de richesses, si seulement on sait où creuser. Avec les bonnes astuces, vous pouvez naviguer à travers ces trésors de données comme un capitaine (ou pirate) aguerri.


Fusion de dictionnaires

Imaginez que vous avez deux cartes au trésor. L'une vous a été léguée par un vieux loup de mer, l'autre, vous l'avez gagnée lors d'une partie de poker avec un perroquet savant. Comment combiner ces richesses en une seule carte ? En python 3.5 et plus, c'est aussi simple que de verser deux verres de rhum ensemble.

tresor_un = {"doublons": 100, "gemmes": 50}
tresor_deux = {"doublons": 200, "cartes magiques": 3}

grand_tresor = {**tresor_un, **tresor_deux}

print(grand_tresor)
# resultat: {'doublons': 200, 'gemmes': 50, 'cartes magiques': 3}

La fusion de dictionnaires avec ** vous permet d'unir les richesses sans perdre une goutte de valeur. Attention cependant, les doublons sont écrasés par les valeurs des trésors suivants.

Acceder aux valeurs

Naviguer dans un dictionnaire sans connaître toutes les clefs peut être aussi déroutant que de lire une carte au trésor sans boussole. Pour éviter de se retrouver sur une île déserte (ou lever une KeyError), python vous offre des outils pour accéder aux valeurs en toute sécurité.

 

carte_au_tresor = {"ile": "Tortuga", "cachette": "cave secrète"}

# Utiliser get pour accéder à une valeur
butin = carte_au_tresor.get("butin", "Pas de butin ici")
print(butin)  # Pas de butin ici

# Utiliser setdefault pour obtenir et potentiellement créer une clef
carte_au_tresor.setdefault("gardien", "Perroquet fantôme")
print(carte_au_tresor["gardien"])  # Perroquet fantôme

 

Avec get et setdefault, vous avez les outils pour déchiffrer votre carte sans jamais tomber dans le piège d'une KeyError inattendue.

Les dictionnaires sont l'épine dorsale de la gestion des données en python. En apprenant à les manipuler avec adresse, vous vous assurez que votre quête de données est aussi fructueuse que la chasse au trésor la plus légendaire. Prêt à lever l'ancre vers des mers de données inexplorées ?

Trucs et astuces pour les boucles


Gérer les boucles en python, c'est un peu comme faire du skateboard dans une ville remplie de raccourcis secrets. Une fois que vous connaissez les astuces, vous pouvez vous déplacer avec une agilité stupéfiante, laissant les spectateurs bouche bée.

Boucles avec enumerate(): le compteur de tours


Imaginez que vous êtes dans une course et que vous voulez non seulement avancer mais aussi compter chaque tour que vous faites. En python, enumerate() transforme une simple balade en une aventure numérotée, vous donnant le contrôle total sur l'index.

 

coureurs = ["Alice", "Bob", "Charlie"]
for index, coureur in enumerate(coureurs, start=1):
    print(f"{index}. {coureur}")

 

C'est comme avoir un copilote qui crie les numéros des tours pendant que vous vous concentrez sur la course. Pratique, n'est-ce pas ?


Boucles avec zip()


Maintenant, imaginons que chaque coureur a un temps associé à son tour. Vous voulez aligner les coureurs et leurs temps comme s'ils étaient dans une course synchronisée. zip() est votre ami, fusionnant deux listes en une seule boucle harmonieuse.

temps = [7.58, 7.41, 7.44]
for coureur, temps in zip(coureurs, temps):
    print(f"{coureur} a réalisé un temps de {temps} secondes.")

 

Avec zip(), vous n'avez plus à jongler avec plusieurs listes; tout est aligné, prêt pour la course. C'est comme si votre équipe courait en parfaite formation, chacun au même rythme.
Les boucles en python peuvent aller bien au-delà d'une simple répétition. En utilisant enumerate() et zip(), vous transformez vos itérations en manœuvres précises et élégantes

Gestion des exceptions

La gestion des exceptions en python est l'acte d'équilibre par excellence. Prévoir l'imprévisible, attraper les erreurs en plein vol et continuer à sourire, tel est le quotidien du développeur agile.


Utilisation de try et except


Imaginez que vous êtes sur un fil, haut dans le ciel du code, avec le potentiel de tomber à chaque faux pas. Les blocs try et except sont vos filets de sécurité, vous assurant que même si quelque chose va mal, vous pouvez rebondir élégamment.

try:
    # Tentative de traversée sur le fil
    marche_sur_le_fil = int(input("Votre prochain pas: "))
except ValueError:
    # Ouf, le filet nous a rattrapés!
    print("Ce n'était pas un pas valide. Essayez avec un nombre.")

 

Avec cette astuce, non seulement vous évitez une chute potentielle, mais vous transformez également l'erreur en une opportunité d'apprentissage pour l'utilisateur (ou pour le développeur).


La souplesse des exceptions: plusieurs filets de sécurité


Parfois, un seul filet ne suffit pas. Heureusement, python vous permet de tisser un réseau de sécurité, prêt à attraper toutes sortes d'erreurs.

try:
    # Plus d'acrobaties
    division_par_zero = 1 / 0
except ZeroDivisionError:
    print("Division par zéro ? Pas aujourd'hui !")
except Exception as e:
    print(f"Erreur inattendue: {e}")

 

Chaque except est un filet spécialisé, conçu pour attraper des erreurs spécifiques.
La gestion des exceptions en python n'est pas seulement une mesure de sécurité; c'est une performance en soi.

Tests et debugging: les détectives du code

Dans le noir labyrinthique du développement, les bugs sont les énigmes à résoudre. Heureusement, python vous équipe d'une loupe et d'un chapeau de détective pour traquer ces malandrins qui se cachent dans les ombres de votre code.

Assertions: les gardiens silencieux

Les assertions sont vos sentinelles, toujours vigilantes, prêtes à crier dès qu'un intrus s'infiltre là où il ne devrait pas être. Utilisez-les pour vérifier que le monde de votre code reste logique et ordonné.

def ajouter(a, b):
    assert type(a) == int and type(b) == int, "Seuls les entiers sont acceptés !"
    return a + b

try:
    ajouter("deux", "trois")
except AssertionError as e:
    print(e)

 

Grâce aux assertions, vous pouvez dormir sur vos deux oreilles, sachant que vos fonctions ne dérailleront pas en plein spectacle.
Vous pouvez aller plus loin sur les assertions.


Le debugging: la traque aux indices


Lorsque les choses se corsent et que les bugs jouent à cache-cache, python vous offre des outils de debugging pour éclairer les coins sombres et révéler les indices cachés. L'utilisation de modules comme pdb vous permet de mettre votre code sous microscope et de suivre la trace des bugs jusqu'à leur tanière.

import pdb

def calcul_mystere(a, b):
    pdb.set_trace()
    resultat = a / b
    return resultat

calcul_mystere(12, 0)


Les tests et le debugging en python vous permettront de voir ce qui ne va pas. Je vous invite à lancer ce script.

Conseils de performance: le sprint final


L'optimisation en python, c'est l'art de transformer une tortue en lièvre, de donner à votre code les ailes pour voler à travers les tâches avec la grâce d'un faucon pèlerin. Quand chaque milliseconde compte, ces astuces vous propulsent vers la ligne d'arrivée.


Générateurs

Les générateurs sont les héros méconnus de la performance en python. En produisant des éléments un à un, ils permettent d'économiser précieusement la mémoire, surtout quand vous traitez avec une montagne de données.

# Au lieu de créer une énorme liste de valeurs...
grosse_liste = [x**2 for x in range(1000000)]

# Utilisez un générateur pour générer les valeurs à la volée
gros_generateur = (x**2 for x in range(1000000))

Avec les générateurs, votre code devient un athlète de fond, capable de parcourir de longues distances sans s'essouffler. Essayez les et vous les adopterez ;).

 

__slots__: le tailleur de mémoire

 

Quand vos classes python commencent à prendre trop de place, __slots__ est là pour tailler dans le gras. En définissant explicitement les attributs autorisés, vous réduisez l'empreinte mémoire de vos instances.

class Optimisee:
    __slots__ = ['nom', 'valeur']
    def __init__(self, nom, valeur):
        self.nom = nom
        self.valeur = valeur

 

petite explication: en définissant __slots__, on indique explicitement les attributs que les instances de notre classe sont autorisées à avoir, ce qui empêche la création dynamique d'autres attributs et réduit la quantité de mémoire requise pour chaque instance.

Voici une explication détaillée

__slots__ = ['nom', 'valeur'] : cette ligne définit les attributs que les instances de la classe Optimisee peuvent avoir. Ici, chaque instance ne pourra avoir que deux attributs : nom et valeur. Cela est particulièrement utile pour économiser de la mémoire lorsque vous avez un grand nombre d'instances d'une classe.

def __init__(self, nom, valeur): c'est le constructeur de votre classe. Il est appelé au moment de la création d'une nouvelle instance de la classe Optimisee.

self.nom = nom : initialise l'attribut nom de l'instance avec la valeur fournie en argument lors de la création de l'instance.

self.valeur = valeur : de même, initialise l'attribut valeur de l'instance.

L'utilisation de __slots__ est particulièrement utile dans les situations où :

- On créé un grand nombre d'instances d'une classe.
- On sait  à l'avance quels seront les attributs de nos instances, et pas besoin d'ajouter dynamiquement des attributs aux instances après leur création.


Cependant, il est important de noter que l'utilisation de __slots__ rend les classes moins flexibles. De plus, cela peut rendre votre code moins compatible avec certaines fonctionnalités de Python qui s'attendent à ce que les objets aient un dictionnaire __dict__ pour stocker leurs attributs, ce qui n'est pas le cas lorsque __slots__ est utilisé.

Comme un coureur en tenue aérodynamique, vos classes deviennent plus légères et plus rapides, prêtes à conquérir les défis de performance.

Optimiser votre code python, c'est comme préparer une voiture de course pour le Grand Prix. Chaque ajustement, chaque amélioration peut être la clé de la victoire. Avec les générateurs et __slots__, vous avez deux outils puissants pour faire passer votre code à la vitesse supérieure. Prêt à brûler l'asphalte du développement avec une performance optimale ?

 

PEP 8

PEP 8 est bien plus qu'un simple guide de style; c'est la boussole qui oriente les développeurs vers un code clair, élégant et, surtout, pythonique. Suivre les préceptes de PEP 8, c'est embrasser une philosophie de codage qui valorise la lisibilité et la cohérence, des piliers essentiels pour assurer la maintenabilité à long terme des projets. Mais aller au-delà de PEP 8, c'est explorer des pratiques avancées qui transforment le code fonctionnel en œuvre d'art. Cela implique d'adopter des stratégies de refactoring intelligent, d'utiliser des annotations de type pour améliorer la clarté et de privilégier les designs patterns adaptés aux problématiques spécifiques. En fin de compte, écrire un code pythonique et maintenable, c'est offrir à vos futurs vous-même et à vos collègues le cadeau d'un héritage code qui résiste élégamment à l'épreuve du temps.

 

Conclusion


Alors que nous arrivons au terme de notre exploration des codes python indispensables, il est clair que la maîtrise de ce langage offre une palette infinie de possibilités, depuis la simplification des tâches quotidiennes et l'automatisatin, jusqu'à la résolution de problèmes complexes en science des données et en apprentissage automatique. Python se distingue par sa simplicité, sa polyvalence et la richesse de sa communauté, rendant l'apprentissage à la fois accessible et profondément enrichissant.

À travers cet article, nous avons navigué parmi une sélection de codes et d'astuces, des compréhensions de listes aux fonctions lambda, en passant par la manipulation de chaînes de caractères et bien plus encore. Chaque concept, chaque ligne de code, a été une invitation à plonger plus profondément dans le monde de la programmation python, à expérimenter et à découvrir par soi-même la puissance et la flexibilité qu'offre ce langage.

Cependant, notre voyage ne s'arrête pas là. La programmation, comme toute compétence, s'enrichit et s'approfondit avec la pratique continue et l'exploration. Je vous encourage à prendre ces codes, à les tester, à les briser, et à les reconstruire. Laissez votre curiosité vous guider vers des projets plus ambitieux, des défis plus complexes, et n'oubliez pas de partager vos découvertes et vos créations avec la communauté. Après tout, c'est en partageant nos connaissances que nous grandissons tous ensemble.

Enfin, rappelez-vous que chaque développeur, qu'il soit débutant ou expert, a quelque chose d'unique à apporter à la table. Les codes python indispensables que nous avons explorés ne sont que le début. La vraie magie réside dans la manière dont vous les utilisez pour donner vie à vos idées, résoudre des problèmes et contribuer au monde de la technologie.

Alors, prenez votre clavier, ouvrez votre éditeur de texte, et commencez à coder. Le monde de python est vaste et regorge de merveilles à découvrir. Qui sait quelles innovations brillantes vous attendent au bout de votre prochaine ligne de code ?

Bon codage !


FAQ : codes python indispensables


Q : Comment créer une classe en python ?
R : Pour créer une classe en python, utilisez le mot-clé class suivi du nom de la classe et d'un deux-points. À l'intérieur de la classe, définissez des méthodes en utilisant def. Voici un exemple simple :

class MaClasse:
    def ma_methode(self):
        print("Bonjour, monde !")

 

Q : Comment puis-je lire et écrire dans un fichier ?
R : Utilisez open() avec le mode approprié ('r' pour lire, 'w' pour écrire). Utilisez la méthode read() pour lire le contenu et write() pour écrire dans le fichier. N'oubliez pas de fermer le fichier avec close() ou utilisez with pour une gestion automatique.

# Écrire dans un fichier
with open('mon_fichier.txt', 'w') as fichier:
    fichier.write('Hello, Python !')

# Lire un fichier
with open('mon_fichier.txt', 'r') as fichier:
    contenu = fichier.read()
    print(contenu)

 

Q : Comment gérer les exceptions ?
R : Utilisez un bloc try pour envelopper le code susceptible de lever une exception, puis gérez l'exception avec un ou plusieurs blocs except

try:
    resultat = 10 / 0
except ZeroDivisionError:
    print("Erreur : Division par zéro.")

 

Q : Comment utiliser les boucles for et while ?
R : Les boucles for sont utilisées pour itérer sur une séquence. Les boucles while s'exécutent tant qu'une condition est vraie.

# Boucle for
for i in range(5):
    print(i)

# Boucle while
i = 0
while i < 5:
    print(i)
    i += 1

 

Q : Qu'est-ce qu'une expression lambda ?
R : Une expression lambda est une petite fonction anonyme. Elle peut prendre plusieurs arguments, mais ne peut avoir qu'une seule expression.

double = lambda x: x * 2
print(double(5))  # Résultat : 10

 

Q : Comment puis-je travailler avec des listes et des dictionnaires ?
R : Les listes stockent des séquences d'éléments, tandis que les dictionnaires stockent des paires clé-valeur.

# Liste
ma_liste = [1, 2, 3, 4, 5]

# Dictionnaire
mon_dico = {'a': 1, 'b': 2, 'c': 3}

 

Q : Quelles sont les bonnes pratiques pour écrire un code python propre ?
R : Suivez le guide de style PEP 8, utilisez des noms de variables descriptifs, et commentez votre code pour améliorer la lisibilité.

Ces questions fréquemment posées offrent un aperçu de certains des concepts et techniques essentiels pour programmer efficacement en python. Pour des questions plus spécifiques ou des cas d'utilisation avancés, la documentation officielle python et les forums communautaires sont d'excellentes ressources pour approfondir vos connaissances.




Comment tester votre connexion Internet avec Python et Speedtest?


Comment utiliser la Fonction Range en Python ?


Les codes python indispensables

Vous êtes sur ce tutoriel

Localiser une adresse IP avec python : un guide complet


Qu'est-ce que '->' dans Python ?


Les dictionnaires en python


La boucle FOR en python


Commentaires

Aucun commentaire pour cet article.

Télécharger Apprendre-la-programmation-avec-python

Rejoignez notre communauté de professionnels et de passionnés, pour rester à la pointe des dernières actualités.

Laissez un commentaire