Les conditions if / else / elif

Apprendre à programmer en python

python

L’instruction if

python_if

Syntaxe

if expression:  			    # ne pas oublier la ponctuation ':'
    bloc d'instructions		# attention à l'indentation
# suite du programme

Si l’expression est vraie (True) alors le bloc d’instructions est exécuté. Si l’expression est fausse (False) on passe directement à la suite du programme.

Premier script

Nous allons commencer par créer le script condition1.py :

Ouvrir Thonny et coller le code ci-dessous :

# script condition1.py

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")
print("Fin du programme")

File → Save As

Au Lycée :

Répertoire : Votre dossier de travail, NSI, Python, Cours

Nom du fichier : condition1.py

Exemple : H:\Travail\NSI\Python\Cours\condition1.py

Pour exécuter le script menu Run > Run current script (ou touche F5) :

>>>
Note sur 20 : 16
J'ai la moyenne
Fin du programme
>>>
Note sur 20 : 5
Fin du programme

L’instruction else

Une instruction else est toujours associée à une instruction if

Syntaxe

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
# suite du programme

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é.

# script condition2.py

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")
print("Fin du programme")

Tester ce code sur thony pour retouver les résultats suivants :

>>>
Note sur 20 : 15
J'ai la moyenne
Fin du programme
>>>
Note sur 20 : 8.5
C'est en dessous de la moyenne
Fin du programme
>>>
Note sur 20 : 56
J'ai la moyenne
Fin du programme

Pour traiter le cas des notes invalides (<0 ou >20), on peut imbriquer des instructions conditionnelles :

# script condition3.py

chaine = input("Note sur 20 : ")
note = float(chaine)
if note > 20.0 or note < 0.0:
    # ce bloc est exécuté si l'expression (note > 20.0 or note < 0.0) est vraie
    print("Note invalide !")
else:
    # ce bloc est exécuté si l'expression (note > 20.0 or note < 0.0) est fausse
    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")
print("Fin du programme")
>>>
Note sur 20 : 56
Note invalide !
Fin du programme
>>>
Note sur 20 : 14.6
J'ai la moyenne
Fin du programme

On ajoute encore un niveau d’imbrication pour traiter les cas particuliers 0 et 20 :

# script condition4.py

chaine = input("Note sur 20 : ")
note = float(chaine)
if note > 20.0 or note < 0.0:
    print("Note invalide !")
else:
    if note >= 10.0:
        print("J'ai la moyenne")
        if note == 20.0:
            # ce bloc est exécuté si l'expression (note == 20.0) est vraie
            print("C'est même excellent !")
    else:
        print("C'est en dessous de la moyenne")
        if note == 0.0:
            # ce bloc est exécuté si l'expression (note == 0.0) est vraie
            print("... lamentable !")
print("Fin du programme")
>>>
Note sur 20 : 20
J'ai la moyenne
C'est même excellent !
Fin du programme
>>>
Note sur 20 : 3
C'est en dessous de la moyenne
Fin du programme

L’instruction elif

Une instruction elif (contraction de else if) est toujours associée à une instruction if

Syntaxe

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 4
# suite du programme

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 4 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
# suite du programme

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

Exemple

# script condition5.py
# ce script fait la même chose que condition4.py

note = float(input("Note sur 20 : "))
if note == 0.0:
    print("C'est en dessous de la moyenne")
    print("... lamentable !")
elif note == 20.0:
    print("J'ai la moyenne")
    print("C'est même excellent !")
elif note < 10.0 and note > 0.0:	# ou bien : elif 0.0 < note < 10.0:
    print("C'est en dessous de la moyenne")
elif note >= 10.0 and note < 20.0:	# ou bien : elif 10.0 <= note < 20.0:
    print("J'ai la moyenne")
else:
    print("Note invalide !")
print("Fin du programme")
>>>
Note sur 20 : 20
J'ai la moyenne
C'est même excellent !
Fin du programme
>>>
Note sur 20 : 3
C'est en dessous de la moyenne
Fin du programme
>>>
Note sur 20 : 77
Note invalide !
Fin du programme

Entrainement 1 :

En vous insipirant de l'algorithme suivant, écrire un programme qui calcule votre age par rapport à votre année de naissance et précise si vous êtes majeur ou mineur.

ALGORITHME age
DONNEE
	Date : 2020, entier
VARIABLE 
	annee_naissance : entier
	age : entier
DEBUT
	écrire ("Quelle est ton année de naissance ?")
	lire (annee_naissance)
	age = date - annee_naissance
	écrire ("tu as", age,"" ans")
	si age > 18 alors
		écrire ("vous êtes majeur")
	sinon
		écrire ("vous êtes mineur")
	finsi
FIN
Voir une solution

Entrainement 3 :

Ecrire un script qui demande la note au bac et qui affiche la mention correspondante. Par exemple :

>>>
Note au bac (sur 20) : 13.5
Bac avec mention Assez Bien
>>>
Note au bac (sur 20) : 10.9
Bac avec mention Passable
>>>
Note au bac (sur 20) : 4
Recalé
>>>

Entrainement 4 :

Ecrire un programme en langage python qui demande à l'utilisateur de saisir un nombre entier et de lui affciher si ce nombre est pair ou impair.

Voir une solution

QCM

QCM sur les structures conditionnelles


Sources :
Ce cours provient du site de Fabrice Sincère