Astuces et patrons utiles
Cette page regroupe des astuces et des patrons de code que tu rencontreras fréquemment en programmation Python. Garde-la sous la main : elle te fera gagner du temps et de la clarté.
1. Convertir la saisie dès la réception
Section intitulée « 1. Convertir la saisie dès la réception »Au lieu de stocker la saisie dans une variable texte, puis de la convertir ensuite, tu peux tout faire en une seule ligne.
❌ En deux étapes
Section intitulée « ❌ En deux étapes »texte = input("Ton âge : ")age = int(texte)✅ En une seule étape
Section intitulée « ✅ En une seule étape »age = int(input("Ton âge : "))L’appel à input() est imbriqué dans l’appel à int() (ou float(), bool(), etc).
Python évalue d’abord l’expression la plus interne, puis passe le résultat à la fonction externe (qui l’enveloppe).
2. Afficher plusieurs valeurs sur une même ligne
Section intitulée « 2. Afficher plusieurs valeurs sur une même ligne »La fonction print() accepte plusieurs arguments séparés par des virgules.
Par défaut, elle insère un espace entre chaque valeur.
nom = "Alice"age = 20moyenne = 87.5
print("Bonjour", nom, "! Tu as", age, "ans.")print("Ta moyenne est de", format(moyenne, ".1f"), "/ 100")Résultat de l’exécution
Section intitulée « Résultat de l’exécution »Bonjour Alice ! Tu as 20 ans.Ta moyenne est de 87.5 / 1003. Division entière et modulo
Section intitulée « 3. Division entière et modulo »Deux opérateurs souvent méconnus mais très utiles.
| Opérateur | Nom | Résultat |
|---|---|---|
// | Division entière | La partie entière du quotient |
% | Modulo | Le reste de la division |
print(17 // 5) # 3 (17 ÷ 5 = 3 reste 2). Équivalent à int(17 / 5)print(17 % 5) # 2 (le reste)Applications courantes
Section intitulée « Applications courantes »Vérifier si un nombre est pair
Section intitulée « Vérifier si un nombre est pair »if nombre % 2 == 0: print("Pair")Vérifier si un nombre est divisible par un autre
Section intitulée « Vérifier si un nombre est divisible par un autre »if nombre % diviseur == 0: print(nombre, "est divisible par", diviseur)Extraire les unités d’un nombre
Section intitulée « Extraire les unités d’un nombre »unites = nombre % 10Convertir des secondes en minutes et secondes
Section intitulée « Convertir des secondes en minutes et secondes »minutes = total_secondes // 60secondes = total_secondes % 60print(minutes, "min", secondes, "sec")4. L’expression conditionnelle (ternaire)
Section intitulée « 4. L’expression conditionnelle (ternaire) »Python permet d’écrire une affectation conditionnelle sur une seule ligne.
variable = valeur_si_vrai if condition else valeur_si_fauxExemple avec if-else classique
Section intitulée « Exemple avec if-else classique »age = int(input("Ton âge : "))
if age >= 18: statut = "majeur"else: statut = "mineur"
print("Tu es", statut)Exemple avec opérateur ternaire
Section intitulée « Exemple avec opérateur ternaire »age = int(input("Ton âge : "))
statut = "majeur" if age >= 18 else "mineur"
print("Tu es", statut)5. Opérateurs d’affectation composée
Section intitulée « 5. Opérateurs d’affectation composée »Au lieu de répéter le nom de la variable, utilise les opérateurs raccourcis.
| Forme longue | Raccourci |
|---|---|
x = x + 5 | x += 5 |
x = x - 1 | x -= 1 |
x = x * 2 | x *= 2 |
x = x / 3 | x /= 3 |
x = x // 2 | x //= 2 |
x = x % 10 | x %= 10 |
x = x ** 2 | x **= 2 |
compteur = 0compteur += 1 # compteur vaut 1compteur += 1 # compteur vaut 2
prix = 100prix *= 1.15 # appliquer la taxe de 15%6. Le patron accumulateur
Section intitulée « 6. Le patron accumulateur »Le patron accumulateur consiste à initialiser une variable avant une boucle, puis à l’enrichir à chaque itération.
Accumuler une somme (calcul de moyenne)
Section intitulée « Accumuler une somme (calcul de moyenne) »somme = 0n = int(input("Combien de notes ? "))for i in range(n): note = float(input("Note : ")) somme = somme + note
moyenne = somme / nprint("Moyenne :", format(moyenne, ".2f"))Accumuler un produit (factorielle)
Section intitulée « Accumuler un produit (factorielle) »produit = 1for i in range(1, 6): produit = produit * i
print("5! =", produit)Accumuler du texte
Section intitulée « Accumuler du texte »resultat = ""n = int(input("Combien de mots ? "))for i in range(n): mot = input("Mot : ") resultat = resultat + mot + " "
print("Phrase :", resultat)7. Redemander une saisie invalide
Section intitulée « 7. Redemander une saisie invalide »Sans limite de tentatives
Section intitulée « Sans limite de tentatives »On utilise une boucle while qui répète la question tant que la réponse ne satisfait pas la condition.
age = int(input("Ton âge (0-120) : "))
while age < 0 or age > 120: print("Valeur invalide.") age = int(input("Ton âge (0-120) : "))
print("Âge enregistré :", age)Avec une limite de tentatives
Section intitulée « Avec une limite de tentatives »On ajoute un compteur qui arrête la boucle après un nombre maximal d’essais.
MAX_ESSAIS = 3essais = 0
age = int(input("Ton âge (0-120) : "))essais = essais + 1
while (age < 0 or age > 120) and essais < MAX_ESSAIS: print("Valeur invalide. Essai", essais, "/", MAX_ESSAIS) age = int(input("Ton âge (0-120) : ")) essais = essais + 1
if age < 0 or age > 120: print("Trop de tentatives. Au revoir.")else: print("Âge enregistré :", age)8. Équivalence entre while et for pour un compteur
Section intitulée « 8. Équivalence entre while et for pour un compteur »Les deux boucles suivantes produisent exactement le même résultat.
i = 0while i < 5: print(i) i = i + 1for i in range(5): print(i)| Aspect | while | for |
|---|---|---|
| Initialisation | Manuelle (i = 0) | Automatique (range) |
| Condition d’arrêt | Explicite (i < 5) | Implicite (fin du range) |
| Incrémentation | Manuelle (i = i + 1) | Automatique |
| Risque de boucle infinie | Oui (si on oublie i = i + 1) | Non |
9. Vérifier une condition sur toute une séquence
Section intitulée « 9. Vérifier une condition sur toute une séquence »Il arrive souvent de devoir vérifier qu’une condition est vraie pour chaque élément d’une séquence. Le patron utilise une variable drapeau (flag).
Vérifier que toutes les notes sont positives
Section intitulée « Vérifier que toutes les notes sont positives »toutes_positives = True
for note in notes: if note < 0: toutes_positives = False break
if toutes_positives: print("Toutes les notes sont valides.")else: print("Au moins une note est négative.")Vérifier qu’au moins un élément respecte la condition
Section intitulée « Vérifier qu’au moins un élément respecte la condition »contient_negatif = False
for note in notes: if note < 0: contient_negatif = True break
if contient_negatif: print("Attention : note négative détectée.")10. Le else après une boucle for
Section intitulée « 10. Le else après une boucle for »Peu de gens le savent : en Python, une boucle for peut avoir un bloc else.
Ce bloc s’exécute seulement si la boucle s’est terminée normalement (sans break).
for note in notes: if note < 0: print("Note invalide détectée !") breakelse: print("Toutes les notes sont valides.")C’est une alternative élégante au patron drapeau vu précédemment.
11. Remplacer une série de conditions par une fonction
Section intitulée « 11. Remplacer une série de conditions par une fonction »Quand un bloc if/elif se répète ou devient très long, c’est le signe qu’il faut extraire cette logique dans une fonction.
Logique mélangée au programme
Section intitulée « Logique mélangée au programme »# ... début du programme ...if imc < 18.5: categorie = "Insuffisance pondérale"elif imc < 25: categorie = "Poids normal"elif imc < 30: categorie = "Surpoids"else: categorie = "Obésité"print("Catégorie :", categorie)
# ... plus tard, même logique pour un autre patient ...if imc2 < 18.5: categorie2 = "Insuffisance pondérale"# ... suite du programmeLogique extraite dans une fonction réutilisable
Section intitulée « Logique extraite dans une fonction réutilisable »def categorie_imc(imc): if imc < 18.5: return "Insuffisance pondérale" elif imc < 25: return "Poids normal" elif imc < 30: return "Surpoids" else: return "Obésité"
# Utilisation simple et claireprint("Patient 1 :", categorie_imc(imc1))print("Patient 2 :", categorie_imc(imc2))12. Améliorer la lisibilité avec des fonctions
Section intitulée « 12. Améliorer la lisibilité avec des fonctions »Même si une portion de code n’est utilisée qu’une seule fois, l’extraire dans une fonction peut rendre le programme principal beaucoup plus clair.
❌ Tout dans le programme principal
Section intitulée « ❌ Tout dans le programme principal »n = int(input("Combien de notes ? "))
somme = 0for i in range(n): note = float(input("Note : ")) while note < 0 or note > 100: print("Invalide (0-100).") note = float(input("Note : ")) somme += note
moyenne = somme / n
if moyenne >= 90: mention = "Excellent"elif moyenne >= 75: mention = "Très bien"elif moyenne >= 60: mention = "Satisfaisant"else: mention = "Échec"
print("Moyenne :", format(moyenne, ".1f"))print("Mention :", mention)Le programme fonctionne, mais il faut lire chaque ligne pour comprendre ce qu’il fait.
✅ Découpage en fonction
Section intitulée « ✅ Découpage en fonction »def saisir_note(): note = float(input("Note : ")) while note < 0 or note > 100: print("Invalide (0-100).") note = float(input("Note : ")) return note
def calculer_moyenne(n): somme = 0 for i in range(n): somme += saisir_note() return somme / n
def determiner_mention(moyenne): if moyenne >= 90: return "Excellent" elif moyenne >= 75: return "Très bien" elif moyenne >= 60: return "Satisfaisant" else: return "Échec"
# Programme principaln = int(input("Combien de notes ? "))moyenne = calculer_moyenne(n)mention = determiner_mention(moyenne)
print("Moyenne :", format(moyenne, ".1f"))print("Mention :", mention)Le programme principal tient maintenant en 5 lignes et se lit comme une recette :
- Demander le nombre de notes à saisir
- Calculer la moyenne des notes
- Déterminer la mention associée à la moyenne
- Afficher la moyenne et la mention.
13. Échanger deux variables
Section intitulée « 13. Échanger deux variables »Python permet l’échange simultané sans variable temporaire.
a = 5b = 10
# Avec variable temporaire (classique)temp = aa = bb = temp
# Échange simultané (Python)a, b = b, a
print(a, b) # 10 5Application sur une liste
Section intitulée « Application sur une liste »La même syntaxe fonctionne pour échanger deux éléments d’une liste.
fruits = ["pomme", "banane", "cerise"]
# Avec variable temporairetemp = fruits[0]fruits[0] = fruits[2]fruits[2] = temp
# Échange simultanéfruits[0], fruits[2] = fruits[2], fruits[0]
print(fruits) # ['cerise', 'banane', 'pomme']14. Déboguer avec print()
Section intitulée « 14. Déboguer avec print() »Quand un programme ne fait pas ce que tu attends, ajoute des print() temporaires pour observer les valeurs pendant l’exécution.
somme = 0for i in range(5): somme += i print("DEBUG — i:", i, "somme:", somme) # ← temporaire
# Quand tout fonctionne, supprime ou commente la ligne DEBUG