Instruction conditionnelle
Voici une situation concrète :
Une personne voulant aller chercher sa baguette de pain a la stratégie suivante :
s’il pleut alors elle prend son parapluie, sinon elle sort sans.
Une condition est un énoncé qui peut être soit vrai, soit faux.
"Il pleut" est une condition :
-
soit il pleut en ce moment si bien que l'énoncé est vrai,
-
soit il ne pleut pas en ce moment si bien que l'énoncé est faux.
Selon que la condition est vraie ou fausse, on effectue un traitement (=une tâche) ou un autre : on parle de traitement conditionnel.
"prendre son parapluie, sinon sortir sans" est un traitement conditionnel dépendant de la condition "il pleut".
On peut écrire la situation concrète ainsi :
Si "il pleut"
alors prendre son parapluie
sinon sortir sans
Fin_si
Plus généralement, on peut écrire, en pseudo-code, une instruction conditionnelle ainsi :
Si condition
alors tâche1
sinon tâche2
Fin_si
Voici une manière imagée de visualiser cette instruction :
En langage Python
Beaucoup de conditions correspondent à des tests tests en Python :
Les tests en Python :
Chaque utilisation de ces tests renvoie une variable qui ne peut prendre que deux valeurs :
True
ou False
;
On parle alors de booléen.
Attention à ne pas confondre :
exécutez le code suivant pour visualiser la différence entre affectation et test d'égalité :
La structure conditionnelle "if"
En Python, voici la structure :
if condition :
instruction(s) à effectuer dans la cas où la condition est remplie
else :
instruction(s) à effectuer dans la cas contraire
-
Le bloc else
n'est pas obligatoire
-
Vous remarquerez le symbole :
très important en Python qui marque le début d'un bloc.
-
C'est l'indentation (=décalage) qui délimite le bloc d'instructions.
-
il n'y a pas de Fin_Si : la fin de l'instruction alternative correspond à la fin de l'indentation (=décalage).
a=float(input("Entrer un nombre réel : "))
if a>=0 :
print("Vous avez entré un nombre positif ou nul",a)
else :
print("Vous avez entré un nombre négatif",a)
Qu'affiche le programme de l'exemple dans chacun des cas suivants :
-
Avec a=8
?
-
Avec a=-6
?
-
Avec a=0
?
-
Avec a="positif"
?
Vous pouvez tester directement le programme précédent ci-dessous. En appuyant sur la touche Next>, vous
visualiserez le fait que l'interpréteur du code
ne traite que l'instruction du if
ou celle du else
suivant si la condition est
remplie ou non.
Écrire un programme qui :
exercice de renforcement
On considère la facturation effectuée par un magasin d'habillement.
Si la facture dépasse 80€ alors le magasin offre 10% de réduction sur celle-ci ; dans le cas contraire, le magasin n'offre qu'une réduction de 5%.
-
Copier le script ci-dessous en langage Python dans l'éditeur d'Edupython (la partie surement en haut à droite) puis remplacer les deux lignes en pointillés afin que le programme demande
à l'utilisateur le prix initialement à payer puis affiche le prix à réellement payer par le client :
prix = float(input("Prix initialement à payer : "))
...........
prix = prix * (1-10/100)
...........
prix = prix * (1-5/100)
print("Grâce à la réduction, vous n'avez plus qu'à payer",prix,"euros !")
Aidez-vous des lignes 2 et 4 de l'exemple 4 précédent en cas de blocage puis adaptez la condition pour correspondre au problème concret.
-
Tester le code avec, entre autre, un prix initial de :
-
30€ : vous devez voir s'afficher un prix final 28.5 euros,
-
156.50€ : vous devez voir s'afficher un prix final 140.85 euros.
exercice de renforcement
Si plus de deux cas
Il est possible d'imbriquer plusieurs instructions conditionnelles ensemble.
On peut détailler l'exemple précédent ainsi en trois cas distinctions par imbrications de deux
instructions conditionnelles :
a=float(input("Entrer un nombre réel : "))
if a>0:
print("Vous avez entré un nombre strictement positif",a)
else: # ici, on est dans le cas où a<= 0
if a==0:
print("Vous avez entré un nombre nul",a)
else: # ici, on est dans le cas où a<=0 et a!=0 donc où a<0
print("Vous avez entré un nombre négatif",a)
Il est possible de simplifier l'écriture de ces imbrication en utilisant le mot clé elif
qui
est la contraction de else if
.
La structure elif
:
if condition1 :
instruction(s)
elif condition2 :
instruction(s)
elif condition3 :
instruction(s)
else :
instruction(s)
On peut réécrire l'imbrication de l'exemple précédent ainsi :
a=float(input("Entrer un nombre : "))
if a>0 :
print("Vous avez entré un nombre strictement positif",a)
elif a==0 :
print("Vous avez entré un nombre nul",a)
else :
print("Vous avez entré un nombre strictement négatif",a)
Un cinéma pratique trois types de tarifs pour deux personnes.
-
si les deux personnes sont mineures, elles payent 7€ chacune,
-
si l'une seulement est mineure, elles payent un tarif de groupe de 15€,
-
si les deux personnes sont majeures, elles payent 18 € en tout.
Écrire un programme qui :
exercice de renforcement
Dans une école de rugby, il y a quatre groupes :
-
le groupe des U8 pour les joueurs entre 8 ans inclus et 10 ans exclus ;
-
le groupe des U10 pour les joueurs entre 10 ans inclus et 12 ans exclus ;
-
le groupe des U12 pour les joueurs entre 12 ans inclus et 14 ans exclus ;
-
le groupe des U14 pour les joueurs entre 14 ans inclus et 16 ans exclus.
Le dirigeant veut qu'un enfant, accompagné de ses parents, allant sur le site Internet de l'école puisse
connaître le groupe qui lui correspondrait une fois son âge saisi.
Ne sachant comment structurer le programme, il fait appel à vous afin que vous lui écriviez un
programme, écrit en langage Python,
qui demande l'âge de l'enfant et renvoie la catégorie une fois la saisie de l'âge effectuée.
Exercices
Deviner avant de lancer les codes suivants quel sera le booléen résultat. Ensuite, vérifier en exécutant chaque code.
-
a = 6
print(a > 6)
-
b = -1
print(b <= 0 )
exercice de renforcement
Mme Aline Cheuve veut inscrire son fils dans un club d'équitation.
Le club lui propose les deux forfaits suivant :
-
Tarif A : une cotisation annuelle de 120€ et chaque séance coûte 11€,
-
Tarif B : chaque séance coûte 17.5€,
On note n
le nombre de séances suivies par l'enfant dans l'année.
Compléter le progamme ci-dessous en langage Python de sorte qu'il affiche le tarif le plus avantageux suivant le nombre n
de séances annuelles
suivies par l'enfant :
n = int(input("Entrer le nombre de séances suivies sur l'année : "))
prix_tarif_A = ..........
prix_tarif_B = ..........
if .......... :
print("Le tarif ... est le plus avantageux ; il faudra payer", ........)
else :
print("Le tarif ... est le plus avantageux ; il faudra payer", ........)
Une salle de cinéma facture chaque séance 10,50€. Le directeur de la salle a mis en place les réductions suivantes :
-
les spectateurs fidèles, qui vont au moins 4 fois par mois au cinéma, disposent d’une réduction de 2,50€ par séance ;
-
les cinéphiles, qui vont 8 fois ou plus par mois au cinéma, paieront 4€ la séance.
-
Compléter l’algorithme de calcul suivant écrit en Python dont le but est d’afficher le montant total payé par mois
(noté Montant
) en fonction du nombre N de séances mensuelles.
N=int(input("N="))
if N......................... :
Montant = 10.5*N
if ........................................ :
Montant=.........*N
if .......................... :
Montant=........
print("La montant total est ",Montant)
Pour écrire en langage Python "0<x≤9" il suffit de saisir : 0<x and x<=9
-
Écrire l'algorithme sur EduPython. (sauts de ligne inutiles)
-
Tester l'algorithme écrit avec différentes valeurs de N
. Penser à vérifier au moins chaque cas possible de tarif.
Réécrire le code de l'algorithme précédent en imbriquant deux strutures if ... else
.
Réécrire le code de l'algorithme précédent en utilisant la struture if ... elif ... else
.
Un magasin de location de vélos affiche les tarifs suivants :
-
Calculer le prix à payer pour 3 heures de locations puis pour 8 heures.
-
Écrire sous Python un programme affichant le prix à payer pour x heures de locations (x : nombre entier saisi par l'utilisateur du programme).
-
Tester l'algorithme avec quelques valeurs de x.
Un groupe de personnes souhaite réserver une location chalet pour l'hiver prochain. Le prix de la location à la semaine est 800€.
De plus, le forfait pour skier toute la semaine est de 150€ par personne, mais il existe un tarif "groupe" à 110€ par personne à partir de 5 personnes
d'un même groupe.
-
Combien devra payer au total un groupe de 4 personnes ?
-
Combien devra payer au total un groupe de 8 personnes ?
-
Écrire en langage Python un programme affichant le prix total à payer par un groupe de N personnes, ce nombre étant demandé à l'utilisateur.
-
Tester l'algorithme.
-
Modifier le programme précédent afin qu'il affiche en sortie le prix que doit payer chaque membre du groupe.
Vous avez pour charge la programmation d'une borne automatique servant à une société de location.
Le client n'a qu'à saisir sur cette borne le nombre de kilomètres parcourus avec le véhicule de location,
la borne affiche ensuite directement le prix à payer.
La société de location vous donne les informations suivantes :
La location journalière d'un véhicule coute 50 €. À ces coûts fixes s'ajoutent :
-
0.40 € par km parcouru jusqu'à 100 km,
-
0.30 € par km parcouru entre 100 et 200 km,
-
0.20 € par km parcouru au-delà.
-
Pour la borne, proposez un algorithme écrit en Python qui affiche le coût de location en fonction du nombre
x
de kilomètres parcourus, nombre saisi par l'utilisateur du programme.
-
Utilisez une variable x
qui stockera le nombre entier de kilomètres parcourus,
-
Utilisez une variable cout
qui stockera le cout, un flottant, correspondant à x
kilomètres parcourus,
-
Imbriquez deux strutures if ... else
ou la struture if ... elif ... else
.
-
Tester votre programme avec des valeurs particulières. En particulier :
-
pour x=50
, le coût affiché doit être de 70€,
-
pour x=150
, le coût affiché doit être de 105€,
-
pour x=285
, le coût affiché doit être de 137€.
Une urne contient 4 boules bleues, 7 boules blanches et 9 boules rouges. On tire au hasard une boule de l'urne et on note sa couleur.
-
Compléter le programme ci-dessous afin qu'il simule cette expérience aléatoire.
from random import randint
tirage=randint(1,20)
if tirage <= 4 :
print("La boule tirée est .........")
else :
if tirage ............ :
print("La boule tirée est .........")
else :
print("La boule tirée est .........")
randint(a,b)
est une instruction du module random
qui renvoie un nombre entier au hasard entre a et b.
pour pouvoir utiliser cette instruction qui n'en est pas une de base en Python, il est nécessaire de l'importer d'où
la nécessité d'écrire en début de script : from random import randint
.
-
Écrire ce programme sous Python.
-
Tester le programme.
Exercices de renforcement
Sur les tests
Deviner avant de lancer les codes suivants quel sera le booléen résultat. Ensuite, vérifier en exécutant chaque code.
-
a = 3.14159
b = 5
print(a > b)
-
c = -3
d = -7/2
print(c <= 0 )
print(d >c )
Pour accéder au code de la correction : lien
Sur l'instruction conditionnelle
On considère l'évolution salariale d'un employé d'une entreprise en fin d'année.
Celui-ci passe un entretien avec son Directeur des Ressources Humaines. Une note sur 20 est attribuée au salarié à l'issue de cet entretien :
Si la note dépasse ou atteint 12, la salire de l'employé sera augmenté de 4% ; dans le cas contraire, le salaire ne sera augmenté que de 2%.
-
Copier le script ci-dessous en langage Python dans l'éditeur d'Edupython puis remplacer les deux lignes en pointillés afin que le programme demande
à l'utilisateur le salaire actuel de l'employé puis affiche le salaire que percevra l'employé l'année suivante :
salaire = float(input("Salaire actuel : "))
note = float(input("Saisir la note obtenue par le salarié :"))
...........
salaire = salaire * (1+4/100)
...........
salaire = salaire * (1+2/100)
print("Suite à l'entretien, votre nouveau salaire sera de ",salaire,"euros !")
La condition porte sur la note obtenue pas sur le salaire.
-
Tester le code avec, entre autre, un salaire initial de 1500€ et une note de :
-
11 : vous devez voir s'afficher un prix final 1530 euros,
-
13 : vous devez voir s'afficher un prix final 1560 euros.
Pour accéder au code de la correction : lien
Proposer un algorithme qui :
-
Demande à l'utilisateur de saisir un nombre,
-
Affiche si ce nombre est plus grand ou égal à 10 ou s'il est strictement plus petit.
Pour accéder au code de la correction : lien
Un théâtre pratique trois types de tarifs suivant le nombre de pièces regardées.
-
Pour au plus de 2 pièces vues, la personne doit payer 15€ la séance,
-
Entre 3 et 5 pièces vues, la personne doit payer 12€ la séance,
-
À partir de 6 séances, la personne doit payer 10€ la séance.
Écrire un programme qui :
Pour accéder au code de la correction : lien