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 :

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 : vision du if then else sous forme d'un panneau du code de la route modifié

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
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 :

  1. Avec a=8 ?

  2. Avec a=-6 ?

  3. Avec a=0 ?

  4. Avec a="positif" ?

Code de déblocage d'une indication supplémentaire :

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

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

    Code de déblocage d'une indication supplémentaire :

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

    Code de déblocage du lien menant à la correction :

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.

Écrire un programme qui :

Code de déblocage du lien menant à la correction :

exercice de renforcement

Dans une école de rugby, il y a quatre groupes :

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.

Code de déblocage du lien menant à la correction :

Exercices

Deviner avant de lancer les codes suivants quel sera le booléen résultat. Ensuite, vérifier en exécutant chaque code.

  1. a = 6
    print(a > 6)
  2. b = -1
    print(b <= 0 )

Code de déblocage de la correction :

exercice de renforcement

Mme Aline Cheuve veut inscrire son fils dans un club d'équitation.

Le club lui propose les deux forfaits suivant :

  1. Tarif A : une cotisation annuelle de 120€ et chaque séance coûte 11€,

  2. 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", ........)   

Code de déblocage du lien menant à la correction :

Une salle de cinéma facture chaque séance 10,50€. Le directeur de la salle a mis en place les réductions suivantes :

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

  2. Écrire l'algorithme sur EduPython. (sauts de ligne inutiles)

  3. Tester l'algorithme écrit avec différentes valeurs de N. Penser à vérifier au moins chaque cas possible de tarif.

  4. Code de déblocage du lien menant à la correction :

  5. Réécrire le code de l'algorithme précédent en imbriquant deux strutures if ... else.

  6. Code de déblocage du lien menant à la correction :

  7. Réécrire le code de l'algorithme précédent en utilisant la struture if ... elif ... else.

  8. Code de déblocage du lien menant à la correction :

Un magasin de location de vélos affiche les tarifs suivants :

  1. Calculer le prix à payer pour 3 heures de locations puis pour 8 heures.

    Code de déblocage du lien menant à la correction :

  2. Écrire sous Python un programme affichant le prix à payer pour x heures de locations (x : nombre entier saisi par l'utilisateur du programme).

  3. Tester l'algorithme avec quelques valeurs de x.

  4. Code de déblocage du lien menant à la correction :

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.

  1. Combien devra payer au total un groupe de 4 personnes ?

    Code de déblocage du lien menant à la correction :

  2. Combien devra payer au total un groupe de 8 personnes ?

    Code de déblocage du lien menant à la correction :

  3. Écrire en langage Python un programme affichant le prix total à payer par un groupe de N personnes, ce nombre étant demandé à l'utilisateur.

  4. Tester l'algorithme.

    Code de déblocage du lien menant à la correction :

  5. Modifier le programme précédent afin qu'il affiche en sortie le prix que doit payer chaque membre du groupe.

    Code de déblocage du lien menant à la correction :

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 :

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

    1. Utilisez une variable x qui stockera le nombre entier de kilomètres parcourus,

    2. Utilisez une variable cout qui stockera le cout, un flottant, correspondant à x kilomètres parcourus,

    3. Imbriquez deux strutures if ... else ou la struture if ... elif ... else.

  2. Tester votre programme avec des valeurs particulières. En particulier :

    1. pour x=50, le coût affiché doit être de 70€,

    2. pour x=150, le coût affiché doit être de 105€,

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

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

  2. Écrire ce programme sous Python.

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

  1. a = 3.14159
    b = 5
    print(a > b)
  2. 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%.

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

  2. 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 :

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.

Écrire un programme qui :

Pour accéder au code de la correction : lien

Licence Creative Commons
Les différents auteurs mettent l'ensemble du site à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International