Semaine 1 · Jour 2 · 420-SN1

LES CONDITIONS

Choisir un chemin selon ce qu'on observe : si / sinon si / sinon

D'abord, une décision de cuisine

la pâte
trop liquide ?
SI VRAI ajoute de la farine
SINON enfourne tout de suite

On fait ça sans arrêt : on observe, on teste une question, et selon la réponse (vrai ou faux) on choisit quoi faire ensuite. Une condition, c'est exactement ça.

Exécuter un bloc seulement si...

if temperatureCorps >= 38.0: print("Fièvre") # ce bloc EN RETRAIT ne tourne que si c'est vrai

Une condition pose une question qui vaut Vrai ou Faux. Le bloc en retrait (l'indentation) ne s'exécute que si la réponse est Vrai.

Deux signes à ne pas oublier : le deux-points : en fin de ligne, et le retrait du bloc en dessous.

L'indentation décide du bloc

Le : ouvre un bloc. Tout ce qui est en retrait juste en dessous appartient au bloc et ne s'exécute que si la condition est vraie. Dès qu'une ligne revient à gauche, elle est hors du bloc : elle s'exécute toujours.

CORRECT dans le bloc
if temperatureCorps >= 38.0: print("Fièvre") print("Fin du test")
BUG retrait oublié
if temperatureCorps >= 38.0: print("Fièvre") print("Fin du test")

À droite, « Fin du test » est revenue à gauche : elle sort tout le temps, même sans fièvre. Convention : 4 espaces par niveau, jamais de mélange espaces / tabulations.

Indenter vite (Colab et autres)

RaccourciEffet
TabDécale la ligne (ou la sélection) d'un cran vers la droite
Shift + TabRamène la ligne d'un cran vers la gauche
Sélection + TabIndente plusieurs lignes d'un coup

Après un : et un retour à la ligne, Colab ajoute le retrait tout seul. Si une ligne refuse de tourner avec IndentationError, c'est presque toujours un mélange d'espaces et de tabulations invisible.

Un seul = n'est pas double ==

=
RECEVOIR

La variable reçoit une valeur : la boîte temperature reçoit 38.5.

temperature = 38.5
==
COMPARER

On pèse les deux côtés : sont-ils égaux ? La réponse vaut True ou False.

temperature == 38.5

= se lit « reçoit » (la flèche tombe dans la boîte) ; == se lit « est-il égal à ? » (la balance compare). Glisser un seul = dans un if est une erreur très fréquente.

Comparer deux valeurs

OpérateurSensExemple
==est égal àpH == 7
!=est différent deetat != "ok"
<est plus petit quevitesse < 5
>est plus grand quemasse > 0
<=plus petit ou égalpH <= 8.5
>=plus grand ou égaltemperatureCorps >= 38.0
PIÈGE = affecte une variable
COMPARE == teste l'égalité

La valeur booléenne : True ou False

Une comparaison n'est pas qu'une question : elle produit une valeur. Cette valeur est d'un type vu au Jour 1, le bool, et ne vaut que deux choses.

True (vrai)
False (faux)
estEnFievre = temperatureCorps >= 38.0 # vaut True ou False print(type(estEnFievre)) # <class 'bool'> if estEnFievre: # on réutilise la valeur, sans recomparer print("Repos !")

Une condition rangée dans une variable : on peut la nommer, l'afficher, la réutiliser. C'est exactement ce que valent les interrupteurs combinés avec and / or / not.

si / sinon si / sinon

if temperatureCorps >= 38.0: print("Fièvre") elif temperatureCorps >= 37.5: print("Température élevée") else: print("Température normale")

elif = « sinon si » (autant qu'on veut), else = « sinon » (le chemin par défaut, sans condition). Python prend le premier chemin Vrai, puis s'arrête.

Combiner des conditions

and

Vrai si les deux sont vraies

or

Vrai si au moins une est vraie

not

Inverse la condition

# Eau potable si le pH est entre 6.5 et 8.5 if pH >= 6.5 and pH <= 8.5: print("potable")

Le chemin pris, pas à pas

temperatureCorps = 38.5
if temperatureCorps >= 38.0
VRAI
print("Fièvre") ✓
elif temperatureCorps >= 37.5
IGNORÉ
print("Température élevée")
else
IGNORÉ
print("Température normale")

38.5 ≥ 38.0 est VRAI : Python prend ce chemin, exécute « Fièvre », puis saute tout le reste.

Le fil des variables — le if s'exécute

temperatureCorps = 38.5 if temperatureCorps >= 38.0: VRAI → diagnostic = "Fièvre" else: diagnostic = "Température normale"
Étape
Instruction
temperatureCorps
diagnostic
1
temperatureCorps = 38.5
38.5
2
if 38.5 >= 38.0 → VRAI
38.5
3
diagnostic = "Fièvre"
38.5
"Fièvre"

Comme 38.5 ≥ 38.0, Python entre dans le if : la variable diagnostic prend la valeur "Fièvre".

Même code — le else s'exécute

temperatureCorps = 36.8 if temperatureCorps >= 38.0: diagnostic = "Fièvre" else: FAUX, donc SINON → diagnostic = "Température normale"
Étape
Instruction
temperatureCorps
diagnostic
1
temperatureCorps = 36.8
36.8
2
if 36.8 >= 38.0 → FAUX
36.8
3
diagnostic = "Température normale"
36.8
"Température normale"

Cette fois 36.8 ≥ 38.0 est FAUX : Python saute le if et prend le else. Même code, mais diagnostic finit à "Température normale".

Et sur du texte ?

OpérateurSur une chaîneExempleVaut
==texte identique (casse comprise)"ok" == "ok"True
!=texte différent"ok" != "OK"True
<avant dans l'ordre alphabétique"arbre" < "banane"True
>après dans l'ordre alphabétique"poire" > "kiwi"True
<= >=idem, avec l'égalité"a" <= "a"True

Oui : < > <= >= comparent alphabétiquement, lettre par lettre, comme dans un dictionnaire. Deux pièges : Python compare les codes Unicode, donc les MAJUSCULES passent avant les minuscules ("Z" < "a" vaut True), et les accents ne suivent pas l'ordre du dictionnaire français.

À TOI DE JOUER

Dans ton calepin, change la valeur de temperatureCorps et devine la sortie avant d'exécuter :

36.8 → ?
37.8 → ?
39.2 → ?
code.experimentations.xyz/calepins/jour-2-conditions/

AU TRAVAIL !

Séance 1-2 : pose tes questions, compare, et dirige ton programme
⤺ Refermer le diaporama