Révisions - Branchements conditionnels#

Qu'est-ce qu'un branchement conditionnel ?#

Dans un programme, en fonction du contexte, toutes les instructions ne doivent pas toujours être exécutées. Par exemple, dans un mini-jeu, on souhaiterait que l'instruction print("Gagné") ne soit exécutée que si l'utilisateur a marqué au moins 100pts. Dans le cas contraire, c'est plutôt l'instruction print("Perdu") qui devrait être exécutée.

Un branchement conditionnel est donc composé d'une condition, ainsi que de blocs d'instructions qui sont effectués en fonction du résultat de la condition.

Conditions#

En programmation, une condition est composée de deux valeurs qui sont comparées entre elles par un opérateur de comparaison. Le résultat de la comparaison est de type bool. Il est donc True dans le cas où la condition est respectée, et False quand elle ne l'est pas

Opérateur

Nom

Exemple

Résultat

==

égal à

3 == 7

False

!=

différent de

3 != 7

True

>

plus grand que

3 > 7

False

<

plus petit que

3 < 7

True

>=

plus grand ou égal à

3 >= 7

False

<=

plus petit ou égal à

3 <= 7

True

Si …#

La forme la plus simple d’un branchement conditionnel est le if : on exécute le bloc d'instructions indenté en dessous seulement si la condition est vraie (True).

1note = float(input("Quelle est votre note ?"))
2if note >= 4:
3    print("Bravo, vous avez réussi l'examen")
4    print("Continuez comme ça !")
5print("Fin du programme")

Important

Les blocs d'instructions devant être exécutées dans un branchement conditionnels sont indentés sous le if. C'est-à-dire qu'ils sont légèrement décalés à droite. Une tabulation permet d'indenter de manière simple et claire.

Si … Sinon#

Le mot-clef else permet d’exécuter un autre bloc d’instructions indenté si la condition du if est n'est pas respectée (False). Le else ne prend jamais de condition car il signifie dans tous les autres cas.

1age = int(input("Quel âge avez-vous ?"))
2if age >= 18:
3    print("Vous êtes majeur")
4else:
5    print("Vous êtes mineur")

Si … Sinon si … Sinon#

Le mot-clef elif (abréviation de else if) permet de tester plusieurs conditions à la suite. Il se place obligatoirement après un if et il peut y en avoir autant que souhaité. Il n'est pas obligatoire d'avoir un else après un elif, même si cela est souvent pratique.

1temperature = float(input("Quelle est la température en °C ?"))
2if temperature < 0:
3    print("Il gèle")
4elif temperature < 15:
5    print("Il fait frais")
6elif temperature < 25:
7    print("Il fait bon")
8else:
9    print("Il fait chaud")

Opérateurs logiques (et/ou)#

Lorsqu'une condition est plus complexe qu'une simple comparaison entre deux valeurs, il est possible de les chaîner. Ce chaînage peut à l'aide des opérateurs logiques and et or.

Opérateur

Description

Exemples

and

donne True si les deux conditions sont vraies

(4 > 1) and (5 == 4) donne False car seulement la 1ère condition est vraie

or

donne True si une des deux conditions est vraie

(4 > 1) or (5 == 4) donne True car la 1ère condition est vraie

Par exemple, le programme ci-dessous permet de déterminer le district d'origine de l'utilsateur en fonction d'un nom de ville.

1ville = input("D'où viens-tu ?")
2if ville == "Romont" or ville == "Rue":
3    print("Tu viens de la Glâne")
4elif ville == "Fribourg" or ville == "Marly":
5    print("Tu viens de la Sarine")
6elif ville == "Tafers" or ville == "Plaffeien" or ville == "Düdingen":
7    print("Tu viens de la Singine")
8else:
9    print("Je ne sais pas d'où tu viens")

Celui ci-dessous permet de vérifier que l'utilisateur a bien l'âge d'acheter du vin, et qu'il a suffisamment d'argent pour le faire.

 1age = int(input("Quel âge as-tu ? "))
 2argent = float(input("Combien d'argent as-tu (en CHF) ? "))
 3
 4prix_vin = 39.90  # prix en CHF d'une bouteille de vin
 5
 6if age >= 16 and argent >= prix_vin:
 7    print("Tu peux acheter du vin.")
 8elif age < 16:
 9    print("Tu es trop jeune pour acheter du vin.")
10elif argent < prix_vin:
11    print("Tu n'as pas assez d'argent pour acheter du vin.")

Exercices#

Exercice 13#

Est-ce que les conditions suivantes sont True (vrai) ou False (faux)?

  1. 1 + 1 == 2

  2. 2 * 3 == 3

  3. 2 + 3 != 4

  4. 14 >= 15

  5. 2 ** 3 == 6

  6. 13 >= 13

Exercice 14#

Est-ce que les conditions suivantes sont True (vrai) ou False (faux), sachant que la variable pays contenant la valeur "Suisse" et la variable temperature la valeur 26.2

  1. pays == "Suisse"

  2. pays != "France"

  3. temperature > 20

  4. temperature < 26.2

  5. temperature < 26

  6. temperature != 26.2

Exercice 15#

Chacun des programmes suivant comporte au moins une erreur. Parfois, cette erreur fait directement buguer le programme avec un message d'erreur rouge. D'autres fois, le programme s'exécute correctement, mais son résultat n'est pas logique.

Corrigez chacun de ces codes de manière à ce qu'ils s'exécutent correctement et affichent un résultat logique.

  1. collège = input("Dans quel collège es-tu ?")
    if collège = STX:
        print("Tu es dans le meilleur collège !")
    print("A bientôt")
    
  2. âge = int(input("Quel âge as-tu ?"))
    if âge < 18:
    print("Tu es majeur")
    else:
    print("Tu es mineur")
    
  3. moyenne = float(input("Quelle moyenne principale as-tu ?"))
    if moyenne < 4
        print("Tu n'es pas promu")
    else
        print("Tu es promu")
    
  4. nombre = float(input("Entre un nombre"))
    
    if nombre > 0:
        print(nombre, "est un nombre positif")
    if nombre < 0:
        print(nombre, "est un nombre négatif")
    else:
        print("Zéro est un nombre ni positif ni négatif")    
    
  5. métier = input("Quel est ton métier ?")
    
    if métier == "étudiant" or "étudiante":
        print("Tu as droit à une réduction")
    else:
        print("Tu dois payer plein prix")
    
  6. note = float(input("Quelle est ta dernière note en informatique"))
    
    if note >= 1 and <= 6:
        if note >= 4:
            print("C'est une note suffisante")
        else:
            print("C'est une note insuffisante")
    else:
        print("Tu as dû te tromper, ce n'est pas une note valide")
    

Exercice 16#

Complétez le programme de commande de pizza suivant. Dans celui-ci, les clients doivent pouvoir entrer le nom de la pizza à commander et recevoir une confirmation de commande. Dans le cas où une pizza *hawaï est commandée, alors le programme affichera un message supplémentaire pour complimenter ce choix. Deux exemples d'exécution sont donnés ci-dessous.

Quelle pizza souhaitez-vous commander ? <-- [prosciutto]
Commande confirmée pour 1x pizza prosciutto

>>>

Quelle pizza souhaitez-vous commander ? <-- [hawaï]
Excellent choix !
Commande confirmée pour 1x pizza hawaï
pizza = input("Quelle pizza souhaitez-vous commander ?")
#Complétez le code ici


print("Commande confirmée pour 1x pizza", pizza)

Exercice 17#

Écrivez un programme permettant de calculer le prix d'un certain nombre de bananes, sachant qu'une banane coûte 1.50 CHF. Si l'utilisateur entre un nombre négatif, alors le programme ne calculera pas de prix et affichera un message d'erreur à la place. Deux exécutions possibles de ce programme pourraient être les suivantes.

Combien de bananes souhaitez-vous acheter ? <-- [4]
Cela vous coûtera 6.0CHF

>>>

Combien de bananes souhaitez-vous acheter ? <-- [-8]
ERREUR : nombre négatif invalide
#Ecrivez votre code ici

Exercice 18#

Complétez le programme suivant pour qu'il corresponde à cet algorithme :

Demander à l'utilisateur quel temps il fait et l'enregistrer dans une variable météo
Si météo est égal à "pluie"
  Afficher "Prenez un parapluie"
Sinon si météo est égal à "neige"
  Afficher "Prenez une veste"
Sinon si météo est égal à "soleil"
  Afficher "Prenez une casquette"
Sinon
  Afficher "Je ne sais pas ce que vous devez prendre"
météo =

print("Prenez un parapluie")

print("Prenez une veste")

print("Prenez une casquette")

print("Je ne sais pas ce que vous devez prendre")

Exercice 19#

Un zoo pratique les tarifs suivants:

  • Les enfants jusqu'à 16 ans paient 15 CHF.

  • Les jeunes jusqu'à 20 ans payent 22 CHF.

  • Les adultes jusqu'à 65 ans payent 28 CHF.

  • Les personnes âgées paient 20 CHF.

Écrivez un programme qui demande l'âge de l'utilisateur et affiche le prix à payer. Le rendu du programme doit être le suivant:

Quel est ton âge? <--- [16]
Pour une personne de 16 ans, le prix à payer est de 22 francs.

Pour une solution optimale, essayez de n'utiliser qu'une seule fois la fonction print()

# Écrivez votre code ici

Exercice 20#

Complétez le programme de quiz ci-dessous qui doit fonctionner de la manière suivante :

Demander à l'utilisateur s'il souhaite répondre à un quiz
Si l'utilisteur dit "oui" ou "ok"
    Poser la question "Qui a écrit Les Misérables ?" et enregistrer la réponse dans une variable réponse
    Si la réponse est égale à "Victor Hugo"
        Afficher "Bonne réponse"
    Sinon
        Afficher Mauvaise réponse
Sinon
    Afficher "Pas de problème, au revoir"
participation = input("Veux-tu répondre à mon quiz ?")
#Complétez le code ici

Exercice 21#

Le programme ci-dessous demande 3 notes à l'utilisateur. Complétez le de manière à ce qu'il n'affiche Tu n'as aucune note insufissante que si ces 3 notes sont supérieure ou égales à 4.

math = float(input("Quelle note ta note de math ?"))
français = float(input("Quelle est ta note de français ?"))
allemand = float(input("Quelle est ta note d'allemand ?"))

#Complétez le code ici
print("Tu n'as aucune note insuffisante")

print("Tu as au moins 1 note insuffisante")

Exercice 22#

Écrivez un programme dans lequel l'utilisateur peut entrer le prix d'un article ainsi qu'un code de réduction et qui calcule le prix final en conséquence. Les conditions d'application de réduction ainsi que 3 exemples d'exécution sont donnés ci-dessous. Votre programme ne doit utiliser la fonction print() qu'une seule fois et à la dernière ligne du programme.

  • Avec le code "STX", un article à moins de 100CHF est réduit de 20%

  • Avec le code "STX", un article à plus de 200CHF est réduit de 35%

  • Les autres articles avec le code "STX" ont une réduction de 20CHF

  • Avec le code "CSMI" ou le code "CGAM", le prix est augmenté de 10CHF

  • Autrement, aucun changement de prix n'est effectué

Combien coûte l'article ? <--- [300]
Quel est votre code de réduction ? <--- [STX]
Le prix final est 195.0 CHF

>>>

Combien coûte l'article ? <--- [150]
Quel est votre code de réduction ? <--- [CSMI]
Le prix final est 160.0 CHF

>>>

Combien coûte l'article ? <--- [50]
Quel est votre code de réduction ? <--- [JSP]
Le prix final est 50.0 CHF
# Écrivez votre code ici