Seconde - Python - Conditions - Cours

Vrai ou Faux ?

Il est possible d'effectuer des tests avec Python, comme tester une égalité ou une inégalité.

Par exemple, Python sait que 3 est plus grand que 2 (heureusement d'ailleurs !) comme on peut le voir en exécutant le code ci-dessous :

print(3 > 2)

L'opération $3 > 2$ n'est pas un calcul, c'est une comparaison. Quand on demande à Python de faire une comparaison, il répond True (Vrai) ou False (Faux) selon le cas. Voici la liste des opérateurs de comparaisons disponibles avec Python :

Opérateur Test effectué
== Égalité
!= Différence
>= Supérieur ou Égalité
> Supérieur strict
<= Inférieur ou Égalité
< Inférieur strict

L'opérateur d'égalité est un double signe égal ==. L'opérateur = est l'opérateur d'affectation (pour donner une valeur à une variable).

À titre d'exemple, essayez de deviner ce que va afficher le programme ci-dessous :

print(22 == 17) print(10*11 >= 20*5) print(4**2 < 2**4)

Python permet également de comparer des chaînes de caractères. Il utilise l’ordre lexicographique, qui n’est rien d’autre que l’ordre alphabétique, utilisé dans un dictionnaire. Par exemple, le mot bonjour étant situé avant le mot bonsoir dans le dictionnaire, la condition "bonjour" <= "bonsoir" sera vraie.

print("bonjour" <= "bonsoir")

Il existe un autre opérateur, spécialement créé pour les chaînes de caractères : l'opérateur in. Grâce à cet opérateur, on peut savoir si une chaîne est contenue dans une autre. Voici plusieurs exemples :

print("o" in "bonjour") print("our" in "bonsoir") print("py" in "Python")

Python est sensible à la casse (il différencie majuscules et minuscules), ce qui explique que le dernier exemple soit faux.

Booléens & Opérateurs logiques

Le résultat d'une comparaison est appelé un booléen ou encore variable booléenne.
Un booléen est ainsi un type de variable particulier qui ne peut prendre que deux valeurs : True ou False.

On peut réaliser des opérations logiques sur ces booléens :

Par exemple, l'affirmation suivante est-elle vraie ?

<< 1 est inférieur à 2 et 3 est supérieur à 4 >>

C'est manifestement faux, et on peut le vérifier avec Python :

print(1 < 2 and 3 > 4)

Essayez de devenir le résultat des opérations logiques suivantes :

print(37 >= 10 and 50 < 100) print(10 < 5 or 100 > 40) print(not 2*3 == 6)

La structure conditonnelle if ... else

Grâce aux booléens, on peut rendre nos programmes dynamiques : les actions à effectuer sont différentes selon les résultats obtenus. Ceci est possible via l'utilisation d'une instruction conditonnelle, en utilisant les mots clés if et else :

if condition: # Instructions à exécuter si condition est VRAIE else: # Instructions à exécuter si condition est FAUSSE

Supposons que l'on dispose de 3 longueurs $AB$, $AC$ et $BC$. Grâce au théorème de Pythagore, nous savons que $ABC$ est rectangle en $A$ si l'égalité $AB^2 + AC^2 = BC^2$ est vérifiée. Ainsi, le programme suivant va nous dire si le triangle est rectangle ou non en $A$ :

AB = 3 AC = 4 BC = 5 if AB**2 + AC**2 == BC**2: print("Le triangle ABC est rectangle en A") else: print("Le triangle ABC n'est pas rectangle en A")

N'hésitez pas à changer les longueurs !

Comme pour les fonctions, il ne faut pas oublier les : après la condition, et ne pas oublier d'indenter (décaler vers la droite) les instructions conditionnelles à effectuer.

Second exemple : pour savoir si un nombre $n$ est divisible par un nombre $d$, il suffit de calculer le reste de la division euclidienne de $n$ par $d$. Nous savons déjà faire ça avec l'opération modulo ou reste : %. Si le reste est égal à 0, alors $n$ est divisible par $d$. Le programme suivant fait tout cela pour nous :

# Programme qui teste la divisibilité par 7 n = 77 if n % 7 == 0: print(f"{n} est divisible par 7") else: print(f"{n} n'est pas divisible par 7")

Et sinon ?

Parfois, il est nécessaire de tester plusieurs conditions. Par exemple, dans l'utilisation du théorème de Pythagore, il peut y avoir 3 égalités à tester selon les longueurs des côtés données. Étant données 3 longueurs $AB$, $AC$ et $BC$, on procède de la manière suivante :

Pour traduire sinon si en Python, on utilise le mot clé elif (contraction de else if) :

AB = 8 AC = 10 BC = 6 if AB**2 + AC**2 == BC**2: print("Le triangle ABC est rectangle en A.") elif AB**2 + BC**2 == AC**2: print("Le triangle ABC est rectangle en B.") elif AC**2 + BC**2 == AB**2: print("Le triangle ABC est rectangle en C.") else: print("Le triangle ABC n'est pas rectangle.")

Conditions et fonctions

Bien entendu, les conditions sont encore utilisables dans les fonctions.

Imaginons la fonction maximum(a,b) qui renvoie le plus grand des deux nombres $a$ et $b$. Voici une manière de faire :

def maximum(a,b): if a > b: M = a else: M = b return M print(maximum(10,4))

La variable M sert à enregistrer la valeur du maximum, qui est :

La valeur de cette variable est retournée à la fin de la fonction. Vous pouvez exécuter le code ci-dessus pour vérifier qu'il fonctionne.

On peut néanmoins se passer de la variable M, en retournant directement la valeur du maximum avec l'instruction return :

def maximum(a,b): if a > b: return a else: return b

Fonction booléenne

Une fonction booléenne est une fonction qui ne retourne pas un nombre mais un booléen (True ou False). Par exemple, on peut définir une fonction jeSuisMajeur(age) qui retourne True si age est supérieur ou égal à 18, et False sinon.

def jeSuisMajeur(age): if age >= 18: return True else: return False

On peut même raccourcir la fonction en renvoyant directement la valeur du test effectué :

def jeSuisMajeur(age): return age >= 18

En effet, age >= 18 est un booléen qui vaut True ou False selon la valeur de la varable age. On se contente alors de retourner cette valeur.

Dernière mise à jour : 04 Nov. 2022, 19:13:15