iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
Formations
Python · Débutant

Python

Apprendre Python de zéro jusqu'au niveau expert : syntaxe, structures de données, POO, générateurs, décorateurs, typage, tests, async et internals du langage.

Python 3.13uvpytestmypyasyncio
01Introduction et installation02Variables et types de base03Conditions et boucles04Fonctions05Listes, tuples, dictionnaires et ensembles06Modules, fichiers et exceptions07Programmation orientée objet08Itérateurs, générateurs, décorateurs et context managers09Typage statique et tests10Concurrence : threads, processus et asyncio11Niveau expert : internals, métaprogrammation et performance
Chapitre 3·30 min

Conditions et boucles

Un programme sans condition ni boucle exécute ses lignes une fois, de haut en bas. Dès qu'il doit choisir ou répéter, on entre dans le contrôle de flux. Python propose peu de constructions, mais chacune est très expressive.

if / elif / else

note = 14
 
if note >= 16:
    mention = "Très bien"
elif note >= 14:
    mention = "Bien"
elif note >= 12:
    mention = "Assez bien"
else:
    mention = "Aucune"

Les comparaisons se chaînent, comme en maths :

if 0 <= note <= 20:
    print("Note valide")

Expression conditionnelle (le « ternaire » Python) :

statut = "majeur" if age >= 18 else "mineur"

match : le pattern matching

Depuis Python 3.10, match fait bien plus qu'un switch. Il déstructure les données.

def traiter(commande: str) -> str:
    match commande.split():
        case ["quitter"]:
            return "Au revoir"
        case ["aller", direction]:
            return f"Direction : {direction}"
        case ["prendre", *objets] if objets:
            return f"Tu prends {', '.join(objets)}"
        case _:
            return "Commande inconnue"
 
traiter("aller nord")          # 'Direction : nord'
traiter("prendre épée bouclier")  # 'Tu prends épée, bouclier'

Il fonctionne aussi sur les dictionnaires, ce qui le rend pratique pour router des événements JSON :

match event:
    case {"type": "click", "x": x, "y": y}:
        print(f"Clic en {x},{y}")
    case {"type": "key", "key": "Escape"}:
        print("Fermeture")

Boucle for

Le for Python itère sur une séquence. Il n'y a pas de for (i = 0; i < n; i++).

for fruit in ["pomme", "kiwi", "mangue"]:
    print(fruit)
 
for lettre in "abc":
    print(lettre)

Pour un compteur, range() :

for i in range(5):          # 0, 1, 2, 3, 4
    print(i)
 
for i in range(2, 10, 3):   # 2, 5, 8
    print(i)

Besoin de l'index et de la valeur ? enumerate(), jamais range(len(...)) :

fruits = ["pomme", "kiwi"]
for i, fruit in enumerate(fruits, start=1):
    print(f"{i}. {fruit}")

Parcourir deux listes en parallèle ? zip() :

noms = ["Ada", "Linus"]
ages = [36, 55]
for nom, age in zip(noms, ages, strict=True):
    print(nom, age)

strict=True lève une erreur si les longueurs diffèrent, au lieu de tronquer silencieusement.

Boucle while

tentatives = 0
while tentatives < 3:
    mdp = input("Mot de passe : ")
    if mdp == "secret":
        print("OK")
        break
    tentatives += 1

break, continue, else

break sort de la boucle, continue passe à l'itération suivante. Moins connu : else sur une boucle s'exécute si la boucle s'est terminée sans break.

nombres = [3, 7, 11, 15]
for n in nombres:
    if n % 2 == 0:
        print(f"Premier pair : {n}")
        break
else:
    print("Aucun nombre pair")

C'est le moyen idiomatique d'écrire une recherche sans variable drapeau.

L'opérateur morse :=

Il affecte et renvoie la valeur dans une expression. Utile dans les while :

while (ligne := input("> ")) != "stop":
    print(f"Tu as tapé {ligne}")

À utiliser avec parcimonie. Si la ligne devient difficile à lire, revenez à deux instructions.

Exercice : FizzBuzz puis jeu du nombre mystère

FizzBuzz, classique des entretiens :

for n in range(1, 101):
    match (n % 3, n % 5):
        case (0, 0): print("FizzBuzz")
        case (0, _): print("Fizz")
        case (_, 0): print("Buzz")
        case _: print(n)

Nombre mystère :

mystere.py
import random
 
secret = random.randint(1, 100)
essais = 0
 
while True:
    essais += 1
    proposition = int(input("Ton nombre : "))
    if proposition < secret:
        print("Plus grand")
    elif proposition > secret:
        print("Plus petit")
    else:
        print(f"Trouvé en {essais} essais")
        break

Amélioration à faire vous-même : gérer la saisie d'un texte non numérique. On verra comment avec les exceptions au chapitre 6.


Le for sur des itérables, enumerate et zip couvrent l'immense majorité des boucles réelles. Si vous vous surprenez à écrire range(len(x)), il existe presque toujours une forme plus lisible.

Précédent
Variables et types de base
Suivant
Fonctions

Développeur fullstack passionné. J'apprends en construisant et je documente tout — front, back, outils. Le code s'apprend mieux en public.

Naviguer

IndexTous les articlesFormationsProfilOutilsBibliothech

Ailleurs

GitHub RSS

Newsletter

Les articles, libs et découvertes. Une fois par semaine, pas plus.

© 2026 William LoreeConçu & codé à la main