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 affiché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

Exercices#

Exercice 18#

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 19#

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 20#

Écrivez l'algorithme suivant en Python:

Demander à l'utilisateur d'entrer un nombre positif et le stocker dans la variable a
Si a est plus petit que 0 alors
  Afficher "Ce n'est pas un nombre positif !"
a = float(input("Entrez un nombre positif: "))
# Complétez le programme ici

Exercice 21#

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 22#

Le programme suivant est censé contrôler si un utilisateur est majeur ou non. Toutefois, il contient 6 erreurs. Trouvez-les et corrigez-les

age = input("Quel âge avez-vous ?")
if age > 18
print("Vous êtes mineur")
else
print("Vous êtes majeur")

Exercice 23#

É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 24#

Sans les exécuter, lisez attentivement les deux programmes ci-dessous. Leur seule différence est l'indentation de la dernière ligne. Expliquez l'impact de cette indentation sur le déroulement de chaque programme.

Programme 1#
prenom = input("Quel est votre prénom ?")
if prenom == "Maxime":
    print("Très joli prénom !")
else:
    print("Bonjour", prenom)
print("A bientôt")
Programme 2#
prenom = input("Quel est votre prénom ?")
if prenom == "Maxime":
    print("Très joli prénom !")
else:
    print("Bonjour", prenom)
    print("A bientôt")

Exercice 25#

Que va afficher ce programme?

1x = 2
2if x <= -1:
3  print(2 * x + 1)
4elif x <= 3:
5  print(-x + 2)
6else:
7  print(2 * x - 5)

Exercice 26#

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

Demander à l'utilisateur d'entrer un nombre et le stocker dans la variable a
Si a est plus grand que 0 alors
  Afficher "Vous avez entré un nombre positif"
Sinon si a est égal à 0
  Afficher "Vous avez entré le nombre zéro"
Sinon
  Afficher "Vous avez entré un nombre négatif"
a = 
if  :

elif  :

else:

Exercice 27#

Écrivez un programme demandant un prénom à l'utilisateur et affichant sa signification. Le programme connaît les significations suivantes.

  • Maxime signifie "celui qui est le plus grand"

  • Félix signifie "celui qui est heureux"

  • Sylvie signifie "celle qui vient de la forêt"

  • Fabien signifie "l'artisan"

  • Clara signifie "celle qui est brillante"

Si un autre prénom est donné au programme, le message "Je ne connais pas la signification de ce prénom" sera affiché. De plus, le programme se terminera dans tous les cas par le message "Au revoir".

#Ecrivez votre code ici

Exercice 28#

Le programme suivant est censé affiché le tarif appliqué en fonction de l'âge de l'utilisateur. Mais il contient une erreur par ligne, trouvez-les et corrigez-les.

age = input("Quel âge as-tu? ")
if age > 18:
print("Tu payes le tarif enfant.")
elif age < 65
  print "Tu payes le tarif adulte."
else age >= 65:
  print(Tu payes le tarif retraité.)

Exercice 29#

Un zoo pratique les tarifs suivants:

  • Les enfants jusqu'à 16 ans révolus payent 15 francs.

  • Les jeunes entre 16 et 20 ans payent 22 francs.

  • Les adultes à partir de 21 ans payent 28 francs.

É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.
# Écrivez votre code ici

Exercice 30#

Complétez les ... dans le programme suivant pour que les textes soient affichés correctement en fonction des valeurs de a et b :

Programme 1#
a = float(input("Entrez un 1er nombre positif"))
b = float(input("Entrez un 2ème nombre positif"))

if ... :
    print("Les deux nombres sont positifs")
else:
    print("Au moins un des deux nombres n'est pas positif")
Programme 2#
a = float(input("Entrez un 1er nombre positif"))
b = float(input("Entrez un 2ème nombre positif"))

if ... :
    print("Au moins 1 nombre est positif")
else:
    print("Aucun des deux nombre est positif")

Exercice 31#

Complàtez le programme ci-dessous pour vérifier si une note est suffisante ou non. De plus, si la note entrée n'est pas valide (c'est-à-dire qu'elle n'est pas comprises entre 1 et 6), alors un message d'erreur est affiché. Trois exemples d'exécution sont donnés ci-dessous :

Entrez une note : <--- [4.25]
Vous avez fait une note suffisante
>>>
Entrez une note : <--- [7]
ERREUR : note invalide
>>>
Entrez une note : <--- [3.75]
Vous avez fait une note insuffisante
note = float(input("Quelle note avez-vous fait ?"))
#Complétez le code ici

Exercice 32#

É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