Aller au contenu

6.1.3 L'instruction conditionnelle if⚓︎

L'instruction conditionnelle if permet de soumettre l'exécution d'instructions à une condition donnée. Cette condition sera une expression booléenne, comme pour la boucle while.

1. Premiers exemples⚓︎

Testez les codes suivants (plusieurs fois en variant les valeurs) dans un IDE:

if

1
2
3
n = int(input("Donne moi un nombre: "))
if n == 42:
    print("C'est le sens de la vie")

if else

1
2
3
4
5
n = int(input("Donne moi un nombre: "))
if n == 42:
    print("C'est le sens de la vie")
else:
    print("Ce n'est pas le sens de la vie")

imbriquer les if

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
moyenne = 13

if moyenne < 8:
    print("raté")
else:
    if moyenne < 10:
        print("repêchage")
    else:
        if moyenne < 12:
            print("admis")
        else:
            if moyenne < 14:
                print("mention AB")
            else:
                if moyenne < 16:
                    print("mention B")
                else:
                    print("mention TB")

2. La syntaxe⚓︎

L'instruction if

Syntaxe générale:

1
2
3
4
if expression:
    *instructions à effectuer si expression est vraie*
else:
    *instructions à effectuer si expression est fausse*

Remarques:

  • expression est évaluée par Python à l'exécution du programme : elle doit renvoyer une valeur booléenne (True ou False). En pratique, c'est souvent une égalité, une comparaison, une appartenance ou une opération booléenne (and, or) sur ce genre d'expressions ;
  • il faut terminer la ligne commençant par if et else par : , comme pour le for ;
  • les instructions à effectuer selon l'évaluation d'expression doivent être indentées;
  • le else est facultatif (comme au premier exemple);
  • en cas d'emploi du else, aucune expression n'est attendue.

Exemple incontournable

Pour tester si un nombre n est divisible par un nombre d, on teste si le reste de la division euclidienne de n par d est égal à 0 :

1
2
3
4
5
n = int(input("Donne moi un nombre: "))
if n % 2 == 0:
    print(n, "est un nombre pair")
else:
    print(n, "est un nombre impair")

3. elif et les cas multiples⚓︎

Dans les situations où l'on veut effectuer des instructions différentes selon les différentes valeurs prises par une variable, comme dans le troisième exemple, on peut imbriquer les instructions if ... else.

Mais cela est vite long et peu lisible, et les différents niveaux d'indentation sont parfois piégeux.

Il existe alors une instruction qui contracte else et if : elif (sinon si).

Le code du troisième exemple devient alors:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
if moyenne < 8:
    print("raté")
elif moyenne < 10:
    print("repêchage")
elif moyenne < 12:
    print("admis")
elif moyenne < 14:
    print("mention AB")
elif moyenne < 16:
    print("mention B")
else:
    print("mention TB")

4. Exercices⚓︎

Exercice 1

Écrire un programme qui demande deux nombres et qui affiche le plus grand des deux.

Rappel: pour stocker dans une variable n un nombre tapé au clavier par l'utilisateur, on utilise l'instruction:

n = int(input('Entrez un nombre'))
1
2
3
4
5
6
7
a = int(input('Donnez moi un nombre: '))
b = int(input('Donnez moi un autre nombre: '))
if a > b:
    m = a
else:
    m = b
print('le plus grand des deux est', m)

Exercice 2

Afficher tous les nombres entre 1 et 100 qui sont divisibles à la fois par 2 et par 7.

for k in range(1, 101): if k % 2 == 0 and k % 7 == 0: print(k)

Exercice 3

On calcule l'IMC (Indice de Masse Corporelle) par la formule \(I = M / T^2\) où M est la masse (en kg) d'une personne et T sa taille (en m). Selon la classification de l'OMS, une personne est en état de maigreur si son IMC est inférieur à 18 et en surpoids si son IMC est supérieur à 25.

  1. Écrire un programme qui demande la masse et la taille d'une personne, calcule son IMC et annonce si la personne est en état de maigreur.
  2. Modifier ensuite le programme pour qu'il annonce si la personne est en état de maigreur, en surpoids ou bien si son IMC est normal.
1
2
3
4
5
6
7
8
9
masse = int(input('Donnez moi votre masse (en kg): '))
taille = float(input('Donnez moi votre taille (en m): '))
imc = masse / (taille ** 2)
if imc <= 18:
    print('vous êtes en état de maigreur')
elif imc >= 25:
    print('vous êtes en surpoids')
else:
    print('votre imc est dans la norme')

Exercice 4

Une année est déclarée bissextile (et compte donc 366 jours au lieu de 365) dans l'un des deux cas :

  • elle est divisible par 4 mais n'est pas divisible par 100 ;
  • elle est divisible par 400.

Écrire un code qui détermine si une année est bissextile ou non.

1
2
3
4
5
6
7
annee = int(input('Année ? '))
if annee%4 == 0 and annee%100 !=0:
    print('année bissextile')
elif annee%400 == 0:
    print('annee bissextile')
else:
    print('annee non bissextile')
1
2
3
4
5
annee = int(input('Année ? '))
if (annee%4 == 0 and annee%100 != 0) or annee%400 == 0:
    print('année bissextile')
else:
    print('annee non bissextile')

Exercice 5

Compter le nombre de voyelles de la phrase 'cet exercice est prodigieusement ennuyeux'.

À l'aide de la fonction len qui renvoie la longueur d'un iterable, donner ensuite le nombre de consonnes.

  • Utiliser une chaine de caractères contenant toutes les voyelles et tester l'appartenance de chaque lettre à cette chaine;
  • Utiliser une variable compteur.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
phrase = 'cet exercice est prodigieusement ennuyeux'`
voyelles = 'aeiouy' # on peut aussi utiliser une liste, mais moins pratique, non?
nb_voyelles = 0
for lettre in phrase:
    if lettre in voyelles:
        nb_voyelles += 1
nb_consonnes = len(phrase) - nb_voyelles #je sais il y a aussi des espaces. 
print('il y a', nb_voyelles, 'et', nb_consonnes, 'consonnes dans cette phrase.')
# autre utilisation de la fonction print:
print(f'il y a {nb_voyelles} et {nb_consonnes} consonnes dans cette phrase.')

Exercice 6

Le jeu du FizzBuzz : il s'agit de compter à partir de 1 en remplaçant certains nombres par Fizz, Buzz ou Fizzbuzz :

  • si le nombre est divisible par 3, on ne le dit pas et on le remplace par Fizz.
  • si le nombre est divisible par 5, on ne le dit pas et on le remplace par Buzz.
  • si le nombre est divisible par 3 et par 5, on ne le dit pas et on le remplace par FizzBuzz.
  • dans tous les autres cas, on donne le nombre.

Ainsi on doit obtenir : 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, etc.

Écrire un code qui joue au FizzBuzz jusqu'à 50 (ou plus).

1
2
3
4
5
6
7
8
9
for nombre in range(1, 51):
    if nombre%3 == 0 and nombre%5 == 0:
        print('FizzBuzz')
    elif nombre%3 == 0:
        print('Fizz')
    elif nombre%5 == 0:
        print('Buzz')
    else:
        print(nombre)

Variante en utilisant des variables booléennes.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
for nombre in range(1, 51):
    fizz = (nombre%3 == 0)
    buzz = (nombre%5 == 0)
    if fizz and buzz:
        print('FizzBuzz')
    elif fizz:
        print('Fizz')
    elif buzz:
        print('Buzz')
    else:
        print(nombre)

Exercice 7

Réaliser un damier (couleurs au choix) avec pygame: