Aller au contenu principal

Les conditions en Python

Controler le flux d'execution avec des conditions

Les valeurs booleennes

En Python, le type bool ne possede que deux valeurs : True et False (avec une majuscule obligatoire !).

est_majeur = True
est_connecte = False
print(type(True)) # <class 'bool'>
attention

En Python, true et false (minuscules) ne sont pas des valeurs booleennes — Python lancerait une NameError. Ecrivez toujours True et False avec une majuscule.

Les operateurs de comparaison

Les operateurs de comparaison permettent de comparer deux valeurs et retournent un booleen.

OperateurSignificationExempleResultat
==Egal a5 == 5True
!=Differents de5 != 3True
<Inferieur a3 < 5True
>Superieur a3 > 5False
<=Inferieur ou egal a5 <= 5True
>=Superieur ou egal a6 >= 5True
age = 20
print(age == 18) # False
print(age >= 18) # True
print(age != 21) # True
attention

Ne confondez pas = (affectation) et == (comparaison) ! age = 18 assigne la valeur, age == 18 compare.

Les operateurs logiques

Les operateurs logiques permettent de combiner plusieurs conditions.

OperateurSignificationExemple
andLes deux conditions sont vraiesage >= 18 and age < 65
orAu moins une condition est vraienote == 0 or note == 20
notInverse le resultat de la conditionnot est_connecte
age = 25
permis = True

# and : les deux doivent etre vrais
peut_conduire = age >= 18 and permis
print(peut_conduire) # True

# or : au moins un doit etre vrai
est_weekend = jour == 'samedi' or jour == 'dimanche'

# not : inverse le booleen
print(not False) # True

Table de verite

print(True and True) # True
print(True and False) # False
print(False or True) # True
print(False or False) # False
print(not True) # False

Le bloc if : l'indentation est obligatoire !

En Python, il n'y a pas d'accolades {}. Le corps d'un bloc est defini par l'indentation (4 espaces par convention). C'est une caracteristique fondamentale du langage.

age = 20

if age >= 18:
print("Vous etes majeur")
print("Acces autorise")
danger

L'indentation est obligatoire en Python. Un code mal indente provoque une IndentationError. Utilisez toujours 4 espaces (pas des tabulations) pour indenter votre code.

Bonne pratique - Indentation

Configurez votre editeur pour utiliser 4 espaces et non des tabulations. La plupart des editeurs (VS Code, PyCharm) le font automatiquement pour Python. Une indentation coherente evite les bugs difficiles a reperer.

Le bloc if/else

Le bloc else s'execute quand la condition du if est fausse.

temperature = 15

if temperature >= 20:
print("Il fait chaud, mettez un t-shirt !")
else:
print("Il fait frais, prenez une veste.")
Bonne pratique - if/else lisible

Evitez les conditions negatives dans le if — elles sont moins lisibles. Preferez if nombre > 0: a if not (nombre <= 0):. La clarte prime sur la concision.

La chaine if/elif/else

Quand on a plusieurs cas mutuellement exclusifs, on utilise elif (contraction de "else if").

note = 75

if note >= 90:
mention = "Tres bien"
elif note >= 80:
mention = "Bien"
elif note >= 70:
mention = "Assez bien"
elif note >= 60:
mention = "Passable"
else:
mention = "Insuffisant"

print(f"Mention : {mention}")

Python evalue les conditions de haut en bas et s'arrete des qu'une condition est vraie. Seul le bloc correspondant est execute.

Bonne pratique - Ordre des elif

Dans une chaine if/elif, ordonnez les conditions du cas le plus restrictif au plus general. Avec des intervalles de notes, commencez par la note la plus haute. Sinon, les conditions superieures pourraient etre "mangees" par une condition plus large.

Les conditions imbriquees

On peut imbriquer des blocs if les uns dans les autres. Chaque niveau d'imbrication ajoute 4 espaces d'indentation.

age = 25
a_un_compte = True

if age >= 18:
if a_un_compte:
print("Bienvenue sur votre espace client !")
else:
print("Veuillez creer un compte.")
else:
print("Acces reserve aux majeurs.")
Bonne pratique - Eviter les imbrications profondes

Trop d'imbrications rendent le code difficile a lire. Utilisez and pour combiner des conditions quand c'est possible : if age >= 18 and a_un_compte: est plus lisible qu'un double if imbrique.

Les operateurs d'appartenance : in et not in

in teste si une valeur est presente dans une sequence (liste, chaine, tuple...).

fruits = ["pomme", "banane", "cerise"]

if "banane" in fruits:
print("La banane est dans la liste")

if "mangue" not in fruits:
print("Pas de mangue dans la liste")

# Fonctionne aussi sur les chaines
mot = "bonjour"
if "bon" in mot:
print("Le mot contient 'bon'")
Bonne pratique - Comparaisons chainees

Python permet d'ecrire 0 <= x <= 100 directement (comparaison chainee), ce qui est encore plus lisible que x >= 0 and x <= 100. Cette syntaxe est unique a Python et tres elegante !

L'expression ternaire

Python propose une expression conditionnelle sur une seule ligne, utile pour les affectations simples.

Syntaxe : valeur_si_vrai if condition else valeur_si_faux

age = 20
statut = "majeur" if age >= 18 else "mineur"
print(statut) # majeur

# Equivalent au if/else classique :
if age >= 18:
statut = "majeur"
else:
statut = "mineur"
# Autres exemples utiles
note = 15
resultat = "Reussi" if note >= 10 else "Echoue"

x = -5
valeur_absolue = x if x >= 0 else -x
Bonne pratique - Ternaire avec moderation

L'expression ternaire est parfaite pour les affectations simples. Evitez de l'imbriquer (a if c1 else b if c2 else c) car cela devient vite illisible. Privilegiez un if/elif/else classique dans ce cas.

Les valeurs truthy et falsy

En Python, toute valeur peut etre evaluee comme un booleen dans une condition. Certaines valeurs sont considerees comme "fausses" (falsy).

Valeurs falsy (evaluees comme False) :

  • False
  • 0 (zero entier ou flottant)
  • "" ou '' (chaine vide)
  • None
  • [] (liste vide), {} (dict vide), () (tuple vide)

Valeurs truthy (evaluees comme True) :

  • Tout le reste : nombres non nuls, chaines non vides, listes non vides...
# Exemples de valeurs falsy
if 0:
print("jamais affiche")

if "":
print("jamais affiche")

if None:
print("jamais affiche")

if []:
print("jamais affiche")

# Valeurs truthy
if 42:
print("42 est truthy") # Affiche

if "bonjour":
print("Une chaine non vide est truthy") # Affiche

if [1, 2, 3]:
print("Une liste non vide est truthy") # Affiche
# Utilisation pratique : verifier si une liste est non vide
ma_liste = [1, 2, 3]
if ma_liste:
print(f"La liste contient {len(ma_liste)} element(s)")

Le match/case (Python 3.10+)

Python 3.10 a introduit l'instruction match/case, similaire au switch/case d'autres langages, mais bien plus puissante.

commande = "quitter"

match commande:
case "demarrer":
print("Demarrage en cours...")
case "arreter":
print("Arret en cours...")
case "quitter":
print("Au revoir !")
case _:
print(f"Commande inconnue : {commande}")

Le case _: joue le role du default et correspond a tout ce qui n'a pas ete capture par les cas precedents.

# match/case peut aussi capturer des valeurs
point = (1, 0)

match point:
case (0, 0):
print("Origine")
case (x, 0):
print(f"Sur l axe X, x = {x}")
case (0, y):
print(f"Sur l axe Y, y = {y}")
case (x, y):
print(f"Point quelconque ({x}, {y})")

Test de memorisation/comprehension


Quelle est la valeur booleenne correcte en Python ?


Quel operateur teste l'egalite en Python ?


Quelle valeur est consideree comme falsy en Python ?


Quelle est la syntaxe correcte d'une expression ternaire en Python ?


Comment Python delimitre les blocs de code (if, else...) ?


Une solution