Aller au contenu

Partie 2 : Conditions et boucles


Les instructions conditionnelles permettent au programme de prendre des décisions : exécuter un bloc de code seulement si une condition est vraie.

age = int(input("Quel âge as-tu ? "))
if age >= 18:
print("Tu es majeur(e).")
print("Tu peux passer le permis.")

Structure :

if condition:
instruction(s) à exécuter si la condition est vraie

Pour exécuter un bloc si la condition est vraie, et un autre bloc si elle est fausse :

age = int(input("Quel âge as-tu ? "))
if age >= 18:
print("Tu es majeur(e).")
else:
print("Tu es mineur(e).")

Pour tester plusieurs conditions enchaînées :

note = float(input("Ta note sur 20 : "))
if note >= 16:
print("Très bien !")
elif note >= 14:
print("Bien !")
elif note >= 12:
print("Assez bien.")
elif note >= 10:
print("Tu as la moyenne.")
else:
print("Il faut réviser...")

elif est la contraction de « else if ». Python teste les conditions dans l'ordre : dès qu'une condition est vraie, il exécute le bloc correspondant et ignore tous les suivants.

On peut mettre un if à l'intérieur d'un autre if :

age = int(input("Ton âge : "))
a_carte = input("As-tu une carte de réduction ? (oui/non) : ")
if age < 18:
if a_carte == "oui":
print("Tarif jeune avec réduction : 5 €")
else:
print("Tarif jeune : 8 €")
else:
if a_carte == "oui":
print("Tarif adulte avec réduction : 10 €")
else:
print("Tarif plein : 15 €")
OpérateurSignificationExempleRésultat
==Égal à5 == 5True
!=Différent de5 != 3True
<Strictement inférieur3 < 5True
>Strictement supérieur5 > 3True
<=Inférieur ou égal5 <= 5True
>=Supérieur ou égal5 >= 6False

On peut combiner plusieurs conditions avec and, or et not :

OpérateurSignificationExemple
andET logique (les deux conditions doivent être vraies)age >= 12 and age <= 17
orOU logique (au moins une condition doit être vraie)jour == "samedi" or jour == "dimanche"
notNON logique (inverse la condition)not inscrit
# AND : les deux conditions doivent être vraies
age = 16
a_carte = True
if age >= 12 and a_carte:
print("Tarif réduit.")
# OR : au moins une condition doit être vraie
temperature = 35
if temperature < 0 or temperature > 40:
print("Température extrême !")
# NOT : inverse vrai et faux
inscrit = False
if not inscrit:
print("Veuillez vous inscrire.")

Table de vérité :

aba and ba or bnot a
TrueTrueTrueTrueFalse
TrueFalseFalseTrueFalse
FalseTrueFalseTrueTrue
FalseFalseFalseFalseTrue

Pour les cas simples, Python permet d'écrire un if/else en une seule ligne :

age = 20
# Forme classique
if age >= 18:
statut = "majeur"
else:
statut = "mineur"
# Forme condensée (expression conditionnelle)
statut = "majeur" if age >= 18 else "mineur"
# Utile dans un print
print("Accès autorisé" if age >= 18 else "Accès refusé")

Les boucles permettent de répéter un bloc d'instructions plusieurs fois, ce qui évite de dupliquer du code.

La boucle for répète un bloc de code un nombre déterminé de fois :

# Afficher les nombres de 0 à 4
for i in range(5):
print(i)
# Affiche : 0, 1, 2, 3, 4
AppelValeurs généréesNombre de valeurs
range(5)0, 1, 2, 3, 45
range(1, 6)1, 2, 3, 4, 55
range(0, 10, 2)0, 2, 4, 6, 85
range(10, 0, -1)10, 9, 8, ..., 110
range(5, 0, -2)5, 3, 13
range(3, 3)(rien)0
# Deux façons de parcourir les caractères d'un mot :
# Méthode 1 : directement (plus simple et plus « pythonique »)
mot = "Python"
for lettre in mot:
print(lettre)
# Méthode 2 : par indice (utile quand on a besoin de la position)
mot = "Python"
for i in range(len(mot)):
print(f"Caractère n°{i} : {mot[i]}")
fruits = ["pomme", "banane", "cerise"]
# Méthode 1 : parcourir les éléments
for fruit in fruits:
print(fruit)
# Méthode 2 : parcourir avec l'indice (enumerate)
for i, fruit in enumerate(fruits):
print(f"{i} : {fruit}")
# 0 : pomme
# 1 : banane
# 2 : cerise

C'est un schéma de programmation très courant : on initialise une variable, puis on la modifie à chaque tour de boucle :

# Somme des entiers de 1 à 100
somme = 0
for i in range(1, 101):
somme = somme + i # ou somme += i
print(f"La somme vaut {somme}") # 5050
# Compter les voyelles d'un mot
mot = "programmation"
compteur = 0
for lettre in mot:
if lettre in "aeiouy":
compteur += 1
print(f"Nombre de voyelles : {compteur}") # 5
# Construire une chaîne lettre par lettre
resultat = ""
for i in range(1, 6):
resultat += str(i) + " "
print(resultat) # "1 2 3 4 5 "

La boucle while répète un bloc tant qu'une condition est vraie. On l'utilise quand on ne connaît pas à l'avance le nombre de répétitions :

# Deviner un nombre
secret = 42
proposition = int(input("Devinez le nombre : "))
while proposition != secret:
if proposition < secret:
print("C'est plus !")
else:
print("C'est moins !")
proposition = int(input("Nouvel essai : "))
print("Bravo, c'est bien 42 !")

Valider une saisie utilisateur :

# Méthode 1 : saisie avant la boucle
note = float(input("Note entre 0 et 20 : "))
while note < 0 or note > 20:
print("Erreur ! La note doit être entre 0 et 20.")
note = float(input("Note entre 0 et 20 : "))
# Méthode 2 : avec un « drapeau » (flag)
valide = False
while not valide:
note = float(input("Note entre 0 et 20 : "))
if 0 <= note <= 20:
valide = True
else:
print("Erreur ! La note doit être entre 0 et 20.")

Ces deux instructions modifient le comportement normal d'une boucle :

  • break : sort immédiatement de la boucle
  • continue : saute au tour suivant de la boucle
# break : arrêter la boucle quand on trouve ce qu'on cherche
for i in range(1, 100):
if i * i > 50:
print(f"Le plus petit entier dont le carré dépasse 50 est {i}")
break
# Affiche : Le plus petit entier dont le carré dépasse 50 est 8
# continue : sauter certains tours
for i in range(1, 11):
if i % 3 == 0:
continue # On saute les multiples de 3
print(i)
# Affiche : 1, 2, 4, 5, 7, 8, 10

On peut mettre une boucle à l'intérieur d'une autre :

# Table de multiplication
for i in range(1, 6):
for j in range(1, 6):
print(f"{i} × {j} = {i * j:2d}", end=" ")
print() # Saut de ligne après chaque ligne du tableau
# Triangle d'étoiles
n = 5
for i in range(1, n + 1):
print("*" * i)
# *
# **
# ***
# ****
# *****
SituationBoucle à utiliserExemple
On connaît le nombre de répétitionsforAfficher 10 fois « Bonjour »
On répète jusqu'à une conditionwhileAttendre un mot de passe correct
On parcourt une collectionforParcourir les lettres d'un mot
On attend une saisie correctewhileRedemander jusqu'à obtenir un nombre valide
On cherche un seuilwhileTrouver n tel que la somme dépasse 1000