Instructions de condition/sélection If Elif Else de Python

Un programme peut décider quelles instructions à exécuter en se basant sur une condition. Considérons le programme suivant :

# Demander à l'utilisateur d'entrer un rayon
rayon = eval(input("Entrer une valeur pour le rayon: "))

# Calculer l'aire
aire = rayon * rayon * 3.14159

# Afficher le résultat
print("L'aire du cercle de rayon ", rayon, "est ", aire)

Si vous entrez une valeur négative pour le rayon, le programme affiche un résultat non valide. Par exemple, pour un rayon = -10, le programme affiche le texte « L’aire du cercle de rayon -10 est 314.159 ».

En fait, il n’existe pas de cercle avec un rayon négatif. Si le rayon est négatif, le programme ne doit pas calculer la surface. Donc, comment pouvez-vous faire face à cette situation?

Comme tous les langages de programmation de haut niveau, Python fournit des structures de sélection qui vous permettent de décider ce que le programme doit faire en fonction de la valeur de certaines variables.

Vous pouvez utiliser l’instruction de sélection suivante pour remplacer les lignes 5 à 8 dans le code ci-dessus:

if rayon < 0:
   print("Rayon invalide")
else:
   aire = rayon * rayon * 3.14159
   print("L'aire du cercle de rayon ", rayon, "est ", aire)

Les structures de sélection utilisent des conditions, qui sont des expressions booléennes. Cette section discute les concepts suivants : types booléens, valeurs, opérateurs de comparaison, et expressions conditionnelles.

Types booléens, valeurs et expressions conditionnelles

Une expression booléenne est une expression qui renvoie l’une des valeurs booléennes Vrai et Faux.

Comment comparez-vous deux valeurs, comment un programme peut savoir si un rayon est supérieur à 0, égal à 0 ou inférieur à 0? Python fournit six opérateurs de comparaison, présentés dans le tableau ci-dessous, pour comparer deux valeurs (le tableau suppose que la valeur du rayon est 5).

************

L’opérateur du test d’égalité est (= =), et non pas un seul signe égal (=).
Le résultat d’une comparaison est une valeur booléenne: Vrai ou Faux. Par exemple, l’instruction suivante affiche le résultat True:

rayon= 1
print(rayon > 0)

Une variable contenant une valeur booléenne est connue sous le nom d’une variable booléenne. Le type de données Boolean est utilisé pour représenter les valeurs logiques ( vrai ou faux).

Une variable booléenne peut contenir l’une des deux valeurs: Vrai ou faux. Par exemple, l’instruction suivante affecte la valeur True pour la variable lightsOn:

lightsOn = True

True et False sont des mots réservés en Python et ne peuvent pas être utilisés comme des identificateurs de variables dans un programme.

D’autre part, Python utilise 1 pour représenter True et 0 pour faux. Vous pouvez utiliser la fonction int pour convertir une valeur booléenne à un nombre entier.

Par exemple, l’instruction print(int(True)) affiche 1 et l’instruction print(int(False)) affiche 0.
Vous pouvez également utiliser la fonction bool pour convertir une valeur numérique en une valeur booléenne.

La fonction renvoie False si la valeur est 0; sinon, elle retourne toujours True.
Par exemple, l’instruction print(bool(0)) affiche False et l’instruction print(bool(4)) affiche True.

La clause if

La forme minimale de l’instruction if exécute les instructions y attachées si la condition est vraie.

L’instruction « print(“6 + 2 = 7 est “,(6+2)==7) » affiche un message tel que « 6 + 2 = 7 est False ». Si vous souhaitez que le message soit « 6 + 2 = 7 est incorrecte », vous devez utiliser une instruction de sélection pour faire ce changement mineur.

Python a plusieurs formes d’instructions de sélection if: la forme minimale composée de la clause if uniquement, la forme « simple » composée des clauses if-else, la forme imbriquée composée de plusieurs instructions if emboîtées, et la forme multi-conditionnelle if-elif-else.

La forme minimale de la clause if exécute une action si et seulement si la condition est vraie selon la syntaxe suivante:

if expression-booléenne:
   instruction(s) # Notez que les instructions doivent avoir un retrait

Les instructions doit être indentées au moins un espace à droite du mot-clé if et chaque instruction doit avoir retrait avec le même nombre d’espaces.

La forme simple if-else respecte la syntaxe suivante :

if expression:
   bloc d'instructions 1 # attention à l'indentation
else: # else est au même niveau que if
   bloc d'instructions 2 # attention à l'indentation

Si l’expression est vraie (True) alors le bloc d’instructions 1 est exécuté. Si l’expression est fausse (False) alors c’est le bloc d’instructions 2 qui est exécuté.

Voici un exemple qui illustre l’utilisation de la forme simple de if.

chaine = input("Note sur 20 : ")
note = float(chaine)

if note >= 10.0:
   # ce bloc est exécuté si l'expression (note >= 10.0) est vraie
   print("J'ai la moyenne")
else:
   # ce bloc est exécuté si l'expression (note >= 10.0) est fausse
   print("C'est en dessous de la moyenne")

Une instruction if peut être placée sous une autre instruction if pour former une clause if imbriquée.

Le bloc d’instructions dans une clause if ou if-else peut être constitué de n’importe quelles instructions Python, y compris une autre instruction if ou if-else. La clause if intérieure à une autre clause if est dite imbriquée.

En fait, l’instruction if interne peut contenir une autre instruction if. Il n’y a pas de limite à la profondeur de l’imbrication. Par exemple, ce code illustre une clause if imbriquée:

if i > k:
   if j > k:
      print("i et j sont supérieurs à k")
else:
   print("i est inférieur ou égal à k")

L’instruction if j > k est imbriquée dans l’instruction if i > k.

Une clause if imbriquée peut être utilisée pour mettre en œuvre un test multi-choix. Les deux codes suivants permettent de calculer le niveau en se basant sur la valeur de la variable score.

Instructions If Imbriquees Python

Le code à gauche utilise une clause if et plusieurs clauses if imbriquées tandis que le code à droite utilise une seule clause if avec plusieurs clauses elif pour accomplir le même résultat.

Vous constatez que l’utilisation des clauses elif offre une solution plus lisible et simple contrairement à l’utilisation de multiples clauses if imbriquées.

Une instruction elif (contraction de else if) est toujours associée à une instruction if selon la syntaxe suivante :

if expression 1:
   bloc d'instructions 1

elif expression 2:
   bloc d'instructions 2

elif expression 3:
   bloc d'instructions 3 # ici deux instructions elif, mais il n'y a pas de limitation

else:
   bloc d'instructions else

Si l’expression 1 est vraie alors le bloc d’instructions 1 est exécuté, et on passe à la suite du programme.

Si l’expression 1 est fausse alors on teste l’expression 2 :

  • si l’expression 2 est vraie on exécute le bloc d’instructions 2, et on passe à la suite du programme.
  • si l’expression 2 est fausse alors on teste l’expression 3, etc.

Le bloc d’instructions else est donc exécuté si toutes les expressions sont fausses (c’est le bloc “par défaut”).

Parfois il n’y a rien à faire. Dans ce cas, on peut omettre l’instruction else :

if expression 1:
   bloc d'instructions 1

elif expression 2:
   bloc d'instructions 2

elif expression 3:
   bloc d'instructions 3
…  ……  ……
…  ……  ……

elif expression n:
   bloc d'instructions n

L’instruction elif évite souvent l’utilisation de conditions imbriquées (et souvent compliquées).

Les opérateurs logiques

Les opérateurs logiques not, and, et or peuvent être utilisés pour créer une condition composite. Parfois, une combinaison de plusieurs conditions détermine si une instruction doit être exécutée.

Vous pouvez utiliser des opérateurs logiques pour combiner ces conditions afin de former une expression composite.

Les opérateurs logiques, également connus sous le nom d’opérateurs booléens, fonctionnent sur des valeurs booléennes pour créer une nouvelle valeur booléenne.

La liste suivante répertorie les opérateurs booléens.

  • not: négation logique
  • and: conjonction logique
  • or:  disjonction logique

Le programme suivant vérifie si un nombre est divisible par 2 et 3, par 2 ou 3, et par 2 ou 3 mais pas les deux.

# Lire la valeur de la variable nombre
nombre = eval(input("Entrer un entier: "))

if nombre % 2 == 0 and nombre % 3 == 0:
   print(nombre, " est divisible par 2 et 3")

if nombre % 2 == 0 or nombre % 3 == 0:
   print(nombre, "est divisible par 2 ou 3")

if (nombre % 2 == 0 or nombre % 3 == 0) and not (nombre % 2 == 0 and nombre % 3 == 0):
   print(nombre, "est divisible par 2 ou 3, mais pas les deux")

Voici les résultats d’exécution du programme pour les entiers 15 et 18.

Entrer un entier: 15
15 est divisible par 2 ou 3
15 est divisible par 2 ou 3, mais pas les deux
Entrer un entier: 18
18 est divisible par 2 et 3
18 est divisible par 2 ou 3

Dans la ligne 4, la condition nombre % 2 == 0 and nombre % 3 == 0 vérifie si le nombre est divisible par 2 et 3. La condition nombre % 2 == 0 or nombre % 3 == 0 (ligne 7) vérifie si le nombre est divisible par 2 ou 3. L’expression booléenne dans les lignes 10-11 :

(nombre % 2 = = 0 or nombre % 3 = = 0) and not (nombre % 2 == 0 and nombre % 3 == 0)

vérifie si le nombre est divisible par 2 ou 3 mais pas les deux.

Expressions conditionnelles

Une expression conditionnelle évalue une expression en se basant sur une condition.
Il se peut que vous vouliez attribuer une valeur à une variable qui est dépendante de certaines conditions. Par exemple, l’instruction suivante affecte 1 à y si x est supérieur à 0, et -1 si x est inférieur ou égal à 0.

if x > 0:
   y = 1
else:
   y = -1

Cependant, comme dans l’exemple suivant, vous pouvez utiliser une expression conditionnelle pour obtenir le même résultat.

y = 1 if x > 0 else -1

Les expressions conditionnelles s’écrivent dans un style complètement différent. La syntaxe est:

expression1 if expression_booléenne else expression2

Le résultat de cette expression conditionnelle est expression1 si expression_booléenne est vraie, sinon le résultat est expression2.

Supposons que vous souhaitez attribuer le plus grand de deux variables nombre1 et nombre2 à une autre variable max. Vous pouvez tout simplement écrire une instruction d’affectation en utilisant l’expression conditionnelle suivante:

max = nombre1 if nombre1 > nombre2 else nombre2

En addition, l’instruction suivante affiche « nombre pair » si la valeur de la variable nombre est paire, et « nombre impair » dans le cas contraire.

print("nombre pair" if number % 2 == 0 else "nombre impair ")

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here