5. Les structures conditionnelles¶
Mémento Python
Raccourcis clavier
Les structures de contrôle sont un élément central de la programmation.
Elles permettent de moduler l’exécution d’un programme selon la valeur de ses variables.
Grâce aux structures conditionnelles, la complexité de vos programmes va pouvoir être décuplée ! 🤯
Les structures de contrôle se retrouvent de façon presque identique dans tous les autres langages de programmation.
L’instruction if¶
L’instruction if
(si, en anglais) permet d’effectuer une liste d’instructions uniquement si une valeur booléenne (appelée la condition) est True (vraie).
Dans l’exemple ci-dessus, on définit la variable booléenne ok
à True (vrai).
L’instruction if
teste cette variable.
Si elle est vraie, le bloc d’instructions (décalé à droite) qui vient après les deux points est exécuté.
Sinon, le bloc
else
(sinon, en français) est exécuté à la place.
⚠️ Notez que le bloc else
n’est pas obligatoire. ⚠️
L’indentation du texte (le décalage à droite) est importante.
Elle permet à l’ordinateur de savoir quelles sont les instructions qui appartiennent au bloc du if
et quelles sont celles qui appartiennent au bloc du else
.
(L’indentation se fait de préférence avec la touche tabulation (TAB) du clavier.)
Exercice 15
Ecrivez un programme qui demande son âge à l’utilisateur. Si l’utilisateur donne un nombre inférieur à 20, le programme écrit “Comme vous êtes jeune !”, sinon il écrit “Comme vous êtes vieux !”.
Solution
Exercice 16
Ecrivez la fonction maximum(a, b) qui prend 2 nombres en argument et retourne le plus grand.
Solution
Le bloc elif
peut être ajouté après le bloc if
pour tester des conditions supplémentaires.
Notez que elif
est la contraction de else if (sinon si, en français).
L’exemple suivant démontre son utilité quand on a 4 situations possibles:
Exercice 17
Ecrivez un programme qui demande à l’utilisateur d’entrer les buts de l’équipe domicile et de l’équipe extérieur. Le programme affiche ensuite quelle équipe a gagné le match (ou match nul en cas d’égalité). Exemples d’exécution :
Buts marqués par l'équipe domicile : 1
Buts marqués par l'équipe extérieur : 2
L'équipe extérieur a gagné !!
Buts marqués par l'équipe domicile : 0
Buts marqués par l'équipe extérieur : 0
Match nul !
Solution
L’instruction while¶
L’instruction while
(qui signifie “tant que” en anglais) permet de répéter un bloc d’instructions tant qu’une condition est remplie.
C’est extrêmement pratique pour réduire le nombre de lignes de code 😜
Dans cet exemple, on initialise la variable a
à 1.
Puis, tant qu’elle est inférieure à 100, on l’affiche à l’écran et on la double.
Ainsi, a
passera de 1 à 2 à 4 à 8, etc.
Le programme imprime donc toute les puissances de deux inférieures à 100.
Exercice 18
Modifier ce programme pour qu’il imprime toutes les puissances de 10 inférieures ou égales à 10000.
Solution
Exercice 19
Ecrivez un programme qui demande en boucle à l’utilisateur comment il va tant qu’il ne répond pas “Bien merci et toi ?”.
Rappel: la fonction input
permet de demander à l’utilisateur d’entrer du texte.
Exemple d’exécution :
Comment tu vas ? Bien
Comment tu vas ? Bof
Comment tu vas ? Nickel !
Comment tu vas ? Bien merci et toi ?
Très bien, merci de demander !
Solution
Le module random¶
Le module random
contient plein de fonctions permettant d’ajouter de l’aléatoire à nos programmes.
Par exmple, la fonction randint(min, max)
du module random
permet de tirer un nombre entier aléatoire entre min
et max
(compris).
Voici un exemple où le programme tire un nombre aléatoire entre 1 et 100.
Il est aussi possible d’afficher des objets de taille aléatoire à des emplacements aléatoires.
Exercice 20 - Devine mon nombre !
Ecrivez un programme qui permet de jouer à “Devine mon nombre”:
Laissez le programme tirer un nombre aléatoire entre 1 et 50.
Demandez à l’utilisateur de proposer un nombre tant qu’il n’a pas trouvé le bon.
A chaque proposition de nombre, le programme affiche “Plus grand” ou “Plus petit” pour aider le joueur.
Ajoutez un compteur de coups nécessaires pour trouver le bon nombre.
Exemple d’exécution :
Devine mon nombre: 32
Plus grand
Devine mon nombre: 43
Plus petit
...
Devine mon nombre: 38
Gagné ! (Il vous a fallu 6 coups)