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 |
|
|
différent de |
3 != 7 |
|
|
plus grand que |
3 > 7 |
|
|
plus petit que |
3 < 7 |
|
|
plus grand ou égal à |
3 >= 7 |
|
|
plus petit ou égal à |
3 <= 7 |
|
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 |
---|---|---|
|
donne |
|
|
donne |
|
Exercices#
Exercice 18#
Est-ce que les conditions suivantes sont True
(vrai) ou False
(faux)?
1 + 1 == 2
2 * 3 == 3
2 + 3 != 4
14 >= 15
2 ** 3 == 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
pays == "Suisse"
pays != "France"
temperature > 20
temperature < 26.2
temperature < 26
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
Solution
1a = float(input("Entrez un nombre positif: "))
2if a < 0:
3 print("Ce n'est pas un nombre positif !")
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)
Solution
1pizza = input("Quelle pizza souhaitez-vous commander ?")
2if pizza == "hawaï":
3 print("Excellent choix !")
4print("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")
Solution
1age = int(input("Quel âge avez-vous ?"))
2if age < 18:
3 print("Vous êtes mineur")
4else:
5 print("Vous êtes majeur")
Comme
age
est comparé avec18
qui est unint
, il faut convertir cette variable dans ce type.Il manquait les deux-points à la fin des lignes du
if
et duelse
.Il y avait une erreur de logique : le programme disait que l'on était mineur si l'on avait plus de 18 ans. Il fallait donc remplacer le
>
par un<
.
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
Solution
1nb_bananes = int(input("Combien de bananes souhaitez-vous acheter ?"))
2if nb_bananes >= 0:
3 prix = 1.5 * nb_bananes
4 print("Cela vous coûtera", prix, "CHF")
5else:
6 print("ERREUR : nombre négatif invalide")
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.
prenom = input("Quel est votre prénom ?")
if prenom == "Maxime":
print("Très joli prénom !")
else:
print("Bonjour", prenom)
print("A bientôt")
prenom = input("Quel est votre prénom ?")
if prenom == "Maxime":
print("Très joli prénom !")
else:
print("Bonjour", prenom)
print("A bientôt")
Solution
Dans le premier programme, le message A bientôt
est affiché dans tous les cas, peu importe le prénom entré. Dans le deuxième programme, ce message n'est affiché que lorsque l'utilisateur entre un prénom différent de Maxime.
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:
Solution
1a = float(input("Entrez un nombre : "))
2if a > 0:
3 print("Vous avez entré un nombre positif")
4elif a == 0:
5 print("Vous avez entré le nombre zéro")
6else:
7 print("Vous avez entré un nombre négatif")
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
Solution
1prenom = input("Quel est votre prénom ?")
2if prenom == "Maxime":
3 print("Votre prénom signifie celui qui est le plus grand")
4elif prenom == "Félix":
5 print("Votre prénom signifie celui qui est heureux")
6elif prenom == "Sylvie":
7 print("Votre prénom signifie celle qui vient de la forêt")
8elif prenom == "Fabien":
9 print("Votre prénom signifie l'artisan")
10elif prenom == "Clara":
11 print("Votre prénom signifie celle qui est brillante")
12else:
13 print("Je ne connais pas la signification de votre prénom")
14print("Au revoir")
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é.)
Solution
1age = int(input("Quel âge as-tu? "))
2if age < 18:
3 print("Tu payes le tarif enfant.")
4elif age < 65:
5 print("Tu payes le tarif adulte.")
6else:
7 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
Solution
1age = int(input("Quel est ton âge?"))
2if age < 16:
3 prix = 15
4elif age <= 20:
5 prix = 22
6else :
7 prix = 28
8print ("Pour une personne de", age, "ans, le prix à payer est de", prix, "francs.")
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
:
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")
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")
Solution
1a = int(input("Entrez le premier nombre : "))
2b = int(input("Entrez le deuxième nombre : "))
3
4if a > 0 and b > 0:
5 print("Les deux nombres sont positifs")
6else:
7 print("Au moins un des deux nombres n'est pas positif")
1a = int(input("Entrez le premier nombre : "))
2b = int(input("Entrez le deuxième nombre : "))
3
4if a > 0 or b > 0:
5 print("Au moins 1 nombre est positif")
6else:
7 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
Solution
1note = float(input("Entrez la note : "))
2
3if note < 1 or note > 6:
4 print("ERREUR : note invalide")
5elif note >= 4:
6 print("Vous avez fait une note suffisante")
7else:
8 print("Vous avez fait une note insuffisante")
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 20CHFAvec le code
"CSMI"
ou le code"CGAM"
, le prix est augmenté de 10CHFAutrement, 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
Solution
1prix = float(input("Combien coûte l'article ?"))
2code = input("Quel est votre code de réduction ?")
3if code == "STX" and prix < 100:
4 prix *= 0.8
5elif code == "STX" and prix > 200:
6 prix *= 0.65
7elif code == "STX":
8 prix -= 20
9elif code == "CSMI" or code == "CGAM":
10 prix += 10
11print("Le prix final est", prix, "CHF")