Conditions#

Jusqu’ici, Python exécutait toutes les instructions dans l’ordre. Une condition lui permet maintenant de choisir un chemin selon la situation rencontrée.

Dès la seconde

Un premier choix#

Exemple
Test simple
Prêt
Sortie

L’expression x > 0 est évaluée comme vraie ou fausse. Lorsque le test est vrai, le bloc indenté est exécuté. S’il est faux, ce bloc est ignoré.

Avec un nombre négatif, puis avec 0, il faut prévoir avant chaque exécution si un message va apparaître.

Traiter les autres cas#

else signifie « dans tous les autres cas ».

Exemple
if et else
Prêt
Sortie

Trois essais sont particulièrement instructifs : une valeur positive, une valeur négative et 0. Un seul des deux blocs est exécuté à chaque fois.

Avec elif, on peut distinguer plusieurs situations.

Exemple
Trois cas
Prêt
Sortie

Python teste les cas dans l’ordre et s’arrête au premier qui convient.

Les comparaisons#

==égal à
!=différent de
<strictement inférieur à
>strictement supérieur à
<=inférieur ou égal à
>=supérieur ou égal à

Attention à ne pas confondre = et == : le premier affecte une valeur à une variable ; le second compare deux valeurs.

Une comparaison à corriger#

Ce programme cherche à afficher un message lorsque age vaut 16, mais il ne peut pas s’exécuter.

À corriger
Affectation ou comparaison ?
Erreur attendue
Sortie

Comment chercher ?

SyntaxError signale que Python ne comprend pas l’écriture de la ligne 3. Il faut identifier si cette ligne cherche à donner une valeur à age ou à comparer sa valeur avec 16, puis choisir l’opérateur correspondant.

Exemple
Comparaisons
Prêt
Sortie

Pair ou impair#

L’opérateur % calcule le reste d’une division euclidienne. Par exemple, 7 % 2 vaut 1 et 8 % 2 vaut 0. Un entier est donc pair lorsque n % 2 == 0.

Exemple
Pair ou impair
Prêt
Sortie

Le cas de 0 et celui d’un entier négatif méritent d’être testés.

Combiner plusieurs conditions#

and demande que les deux conditions soient vraies. or demande qu’au moins l’une des deux soit vraie. Enfin, not inverse un booléen : not x >= 10 est vrai lorsque x >= 10 est faux. L’écriture x < 10 est plus directe dans cet exemple, mais not devient utile pour nier une condition plus complexe.

Exemple
Conditions combinées
Prêt
Sortie

Que se passe-t-il précisément pour 0 et pour 10 ? Les bornes appartiennent-elles aux intervalles décrits par les messages ?

Une fonction définie par cas#

On considère :

\[\begin{split}f(x) = \begin{cases} x^2 & \text{si } x \geqslant 0, \\ -x & \text{sinon.} \end{cases}\end{split}\]
Exemple
Fonction définie par cas
Prêt
Sortie

Sans reprendre le code ligne par ligne, décris en une phrase la méthode utilisée par cette fonction. Le calcul de f(0) permet ensuite de vérifier que la valeur frontière est traitée par le bon cas.

Tester et valider une fonction#

Un test compare le résultat obtenu à un résultat attendu, calculé à l’avance. L’instruction assert interrompt le programme et affiche AssertionError lorsque la condition qui la suit est fausse. Si tous les tests réussissent, elle ne produit aucun affichage.

Exemple
Vérifier une fonction avec assert
Prêt
Sortie

Les trois valeurs ont des rôles différents : un cas positif ordinaire, la valeur frontière 0 et un cas négatif qui emprunte l’autre branche. Pour construire des tests utiles :

  • commencer par un exemple dont le résultat a été obtenu à la main ;

  • essayer les valeurs frontières et les cas particuliers suggérés par l’énoncé ;

  • chercher un contre-exemple, c’est-à-dire une valeur qui pourrait mettre en défaut la méthode ;

  • si un test échoue, réduire l’exemple autant que possible avant de suivre les variables pas à pas.

Quelques tests réussis ne démontrent pas qu’un programme fonctionne dans tous les cas. En revanche, un seul contre-exemple suffit à montrer qu’il faut corriger l’algorithme ou sa traduction en Python.

Exercices#

Exercice 1

Écrire une fonction est_multiple_de_3(n) qui renvoie un booléen, puis l’utiliser pour tester un entier et afficher un message adapté.

À toi
Multiple de 3
À faire
Sortie

Exercice 2

Créer une fonction maximum(a, b) qui renvoie le plus grand des deux nombres. Elle doit aussi fonctionner quand les deux nombres sont égaux.

À toi
Maximum de deux nombres
À faire
Sortie

Exercice 3

Créer la fonction définie par :

\[\begin{split}g(x) = \begin{cases} x+1 & \text{si } x < 2, \\ 3x & \text{sinon.} \end{cases}\end{split}\]
À toi
Fonction g définie par cas
À faire
Sortie

Exercice 4

Écrire une fonction est_multiple(a, b) qui renvoie True lorsque l’entier naturel a est un multiple de l’entier naturel non nul b, et False sinon.

À toi
Tester deux entiers
À faire
Sortie

Exercice 5

Écrire une fonction plus_grand_multiple(a, b) qui renvoie le plus grand multiple de l’entier naturel non nul a inférieur ou égal à l’entier naturel b.

À toi
Plus grand multiple
À faire
Sortie

Dans le parcours