if / elif / else : prendre une décision
Jusqu'ici, votre code s'exécute ligne après ligne, sans jamais dévier. Une condition permet d'exécuter du code seulement si quelque chose est vrai. Le mot-clé de base est if :
age = 20
if age >= 18:
print("Vous êtes majeur")
Pour traiter plusieurs cas, on enchaîne avec elif (« sinon si ») et on termine par else (« sinon ») :
note = 14
if note >= 16:
print("Très bien")
elif note >= 12:
print("Bien")
elif note >= 10:
print("Passable")
else:
print("Insuffisant")
# Affiche : Bien
Python teste chaque condition dans l'ordre et s'arrête dès qu'une est vraie. Les blocs elif et else sont optionnels : un if peut vivre tout seul.
L'indentation FAIT le bloc. Contrairement à d'autres langages qui utilisent des accolades { }, Python délimite les blocs avec l'indentation : 4 espaces. Tout ce qui est indenté sous le if appartient au if. Dès qu'on revient à la marge, on sort du bloc. Le deux-points : en fin de ligne annonce le bloc qui suit.
if age >= 18:
print("Cette ligne est DANS le if")
print("Celle-ci aussi (même indentation)")
print("Celle-ci est DEHORS, elle s'affiche toujours")
Comparer et combiner
Une condition repose sur une comparaison qui vaut True ou False. Voici les six opérateurs :
==: égal à!=: différent de<: inférieur à>: supérieur à<=: inférieur ou égal>=: supérieur ou égal
On combine plusieurs conditions avec les opérateurs booléens and (et), or (ou) et not (négation) :
age = 25
abonne = True
# and : les DEUX doivent être vraies
if age >= 18 and abonne:
print("Accès autorisé")
# or : AU MOINS UNE doit être vraie
if age < 12 or age >= 65:
print("Tarif réduit")
# not : inverse la valeur
if not abonne:
print("Pensez à vous abonner")
# Affiche : Accès autorisé
Piège classique : = n'est pas ==. Le simple = est une affectation (« range cette valeur dans la variable »), alors que le double == est une comparaison (« est-ce que c'est égal ? »). Écrire if age = 18: provoque une SyntaxError. Dans une condition, on veut toujours ==.
La boucle for : répéter
Une boucle répète un bloc de code. La boucle for parcourt une séquence, un élément à la fois. La fonction range(n) génère les nombres de 0 à n - 1 :
for i in range(5):
print(i)
# Affiche 0, 1, 2, 3, 4 (pas 5 !)
On parcourt aussi directement une liste, sans s'occuper des indices :
fruits = ["pomme", "banane", "cerise"]
for fruit in fruits:
print(f"J'aime la {fruit}")
# J'aime la pomme
# J'aime la banane
# J'aime la cerise
Si vous avez besoin de l'indice et de l'élément en même temps, enumerate() fait les deux :
for i, fruit in enumerate(fruits):
print(f"{i}: {fruit}")
# 0: pomme
# 1: banane
# 2: cerise
while, break et continue
La boucle while répète tant qu'une condition reste vraie. Pratique quand on ne sait pas à l'avance combien de tours il faudra :
compteur = 0
while compteur < 3:
print(f"Tour numéro {compteur}")
compteur = compteur + 1
# Tour numéro 0
# Tour numéro 1
# Tour numéro 2
La boucle infinie. Si la condition d'un while ne devient jamais fausse, la boucle tourne à l'infini et bloque le programme. Ici, oublier la ligne compteur = compteur + 1 ferait tourner le code pour toujours. Vérifiez toujours que quelque chose fait évoluer la condition vers la sortie.
Deux mots-clés pilotent le déroulement d'une boucle (for comme while) :
break: sort immédiatement de la bouclecontinue: saute le reste du tour et passe au suivant
for i in range(10):
if i == 5:
break # on arrête tout dès qu'on atteint 5
if i % 2 == 0:
continue # on saute les nombres pairs
print(i)
# Affiche 1, puis 3
# (4 est sauté, et à 5 on sort)
Récap : tout assembler
Conditions et boucles se combinent en permanence. Voici un petit programme qui parcourt une liste de notes et compte les reçus :
notes = [15, 8, 12, 6, 18, 10]
recus = 0
for note in notes:
if note >= 10:
recus = recus + 1
print(f"{note} : reçu")
else:
print(f"{note} : recalé")
print(f"Total reçus : {recus} sur {len(notes)}")
Vous tenez là les deux briques fondamentales de tout programme : décider (if) et répéter (for, while). Presque tout le reste s'appuie dessus.
if / elif / else — making a decision
So far, your code runs line by line, never deviating. A condition lets you run code only if something is true. The basic keyword is if:
age = 20
if age >= 18:
print("You are an adult")
To handle several cases, chain with elif ("else if") and finish with else ("otherwise"):
grade = 14
if grade >= 16:
print("Excellent")
elif grade >= 12:
print("Good")
elif grade >= 10:
print("Pass")
else:
print("Fail")
# Prints: Good
Python tests each condition in order and stops as soon as one is true. The elif and else blocks are optional: an if can stand alone.
Indentation MAKES the block. Unlike other languages that use curly braces { }, Python delimits blocks with indentation: 4 spaces. Everything indented under the if belongs to the if. As soon as you return to the margin, you leave the block. The colon : at the end of the line announces the block that follows.
if age >= 18:
print("This line is INSIDE the if")
print("This one too (same indentation)")
print("This one is OUTSIDE, it always prints")
Comparing and combining
A condition relies on a comparison that evaluates to True or False. Here are the six operators:
==— equal to!=— not equal to<— less than>— greater than<=— less than or equal>=— greater than or equal
You combine several conditions with the boolean operators and, or and not (negation):
age = 25
subscribed = True
# and: BOTH must be true
if age >= 18 and subscribed:
print("Access granted")
# or: AT LEAST ONE must be true
if age < 12 or age >= 65:
print("Reduced fare")
# not: flips the value
if not subscribed:
print("Consider subscribing")
# Prints: Access granted
Classic trap: = is not ==. A single = is an assignment ("store this value in the variable"), while a double == is a comparison ("are these equal?"). Writing if age = 18: raises a SyntaxError. In a condition, you always want ==.
The for loop — repeating
A loop repeats a block of code. The for loop walks through a sequence, one element at a time. The range(n) function generates the numbers from 0 to n - 1:
for i in range(5):
print(i)
# Prints 0, 1, 2, 3, 4 (not 5!)
You can also iterate directly over a list, without dealing with indices:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(f"I like {fruit}")
# I like apple
# I like banana
# I like cherry
If you need the index and the element at the same time, enumerate() does both:
for i, fruit in enumerate(fruits):
print(f"{i}: {fruit}")
# 0: apple
# 1: banana
# 2: cherry
while, break and continue
The while loop repeats as long as a condition stays true. Handy when you don't know in advance how many iterations you'll need:
counter = 0
while counter < 3:
print(f"Iteration {counter}")
counter = counter + 1
# Iteration 0
# Iteration 1
# Iteration 2
The infinite loop. If a while condition never becomes false, the loop runs forever and freezes the program. Here, forgetting the line counter = counter + 1 would run the code forever. Always make sure something moves the condition toward the exit.
Two keywords steer the flow of a loop (both for and while):
break— exits the loop immediatelycontinue— skips the rest of the current iteration and moves to the next
for i in range(10):
if i == 5:
break # stop everything once we reach 5
if i % 2 == 0:
continue # skip even numbers
print(i)
# Prints 1, then 3
# (4 is skipped, and at 5 we exit)
Recap — putting it together
Conditions and loops combine constantly. Here is a small program that walks through a list of grades and counts the passes:
grades = [15, 8, 12, 6, 18, 10]
passed = 0
for grade in grades:
if grade >= 10:
passed = passed + 1
print(f"{grade}: pass")
else:
print(f"{grade}: fail")
print(f"Total passed: {passed} out of {len(grades)}")
You now hold the two fundamental building blocks of any program: deciding (if) and repeating (for, while). Almost everything else builds on top of them.
Copiez ce prompt dans Claude ou ChatGPT :
Écris un programme Python qui parcourt les nombres de 1 à 100 et affiche « Fizz » pour les multiples de 3, « Buzz » pour les multiples de 5, « FizzBuzz » pour les multiples des deux, et le nombre sinon. Utilise une boucle for et des conditions if/elif/else.
Sans relire le code de l'IA : pour le FizzBuzz, pourquoi faut-il tester le cas « multiple de 3 ET de 5 » AVANT les cas « multiple de 3 » et « multiple de 5 » dans la chaîne if/elif ?
elif nombre % 3 == 0 en premier, un multiple de 15 (donc de 3 et de 5) afficherait « Fizz » et n'atteindrait jamais le cas « FizzBuzz ». Le cas le plus spécifique (nombre % 3 == 0 and nombre % 5 == 0) doit donc venir en tête de la chaîne.Tu as demandé à l'IA une boucle qui compte à rebours de 5 à 1. Ton rôle de relecteur : l'accepter telle quelle ou la rejeter, et dire pourquoi.
n = 5
while n > 0:
print(n)
# affiche 5, 4, 3, 2, 1 ... censément
n à l'intérieur du while, donc la condition n > 0 reste vraie pour toujours et le programme se fige en affichant des 5 sans fin. Il manque une ligne qui fait évoluer la condition vers la sortie, par exemple n = n - 1 après le print. C'est le piège classique du while : toujours vérifier que quelque chose rapproche de la condition d'arrêt.Sans remonter dans la leçon : quels nombres parcourt range(5), et quelle est la différence entre break et continue ?
range(5) parcourt 0, 1, 2, 3, 4 : il commence à 0 et s'arrête AVANT 5 (cinq valeurs). break sort immédiatement de la boucle entière ; continue abandonne seulement le tour en cours et repart au tour suivant. Bref : break = je quitte la boucle, continue = je saute ce tour-là.for i in range(5): ?break dans une boucle ?You know how to decide and repeat. But to store many values and find them easily, you need the right structures: we move on to lists and dictionaries.
Lesson 4: Lists and dictionaries →