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

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

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

É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 !"
1a = float(input("Entrez un nombre positif: "))
2# Complétez le programme ici

Exercice 22#

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ï
1pizza = input("Quelle pizza souhaitez-vous commander ?")
2#Complétez le code ici
3
4
5print("Commande confirmée pour 1x pizza", pizza)

Exercice 23#

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

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

Exercice 24#

É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
1#Ecrivez votre code ici

Exercice 25#

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

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

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"
1a = 
2if  :
3
4elif  :
5
6else:

Exercice 28#

É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".

1#Ecrivez votre code ici

Exercice 29#

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.

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

Exercice 30#

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

Exercice 31#

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#
1a = float(input("Entrez un 1er nombre positif"))
2b = float(input("Entrez un 2ème nombre positif"))
3
4if ... :
5    print("Les deux nombres sont positifs")
6else:
7    print("Au moins un des deux nombres n'est pas positif")
Programme 2#
1a = float(input("Entrez un 1er nombre positif"))
2b = float(input("Entrez un 2ème nombre positif"))
3
4if ... :
5    print("Au moins 1 nombre est positif")
6else:
7    print("Aucun des deux nombre est positif")

Exercice 32#

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
1note = float(input("Quelle note avez-vous fait ?"))
2#Complétez le code ici

Exercice 33#

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