Aller au contenu principal

Corrigé - Atelier 3 - If

Essayez de faire l'atelier avant de consulter ce corrigé.

Compréhension​

Numéro 1​

Quelques valeurs de age et les lignes affichées:

ageFacebookPrésidentPermisCatégorie
12trop jeunetrop jeunepas de permisenfant
13(rien)trop jeunepas de permisadolescent
15(rien)trop jeunepas de permisadolescent
17(rien)trop jeuneavec accompagnateuradolescent
20(rien)trop jeune(rien)adulte
65(rien)trop jeune(rien)aîné
70(rien)assez vieux(rien)aîné

Chaque if est indépendant des autres, une valeur peut donc afficher plusieurs lignes en même temps (ex. age = 12 affiche 4 lignes).

Numéro 2​

Quelques valeurs de heure:

heureSalutationBureau
9Bonjourouvert
17Bon après-midifermé
6Bonjourfermé
21Bonsoirfermé

Le bureau est ouvert de 9h (inclus) à 17h (exclu), donc fermé à exactement 17h.

Écriture​

Numéro 3​

Version avec 2 prints (le message est assemblé dans une variable, puis affiché à la fin):

nombre: int = -1
message: str

if nombre > 0:
message = "est positif"
elif nombre < 0:
message = "est négatif"
else:
message = "est égal à zéro"

print(nombre)
print(message)

Version avec 4 prints (un print par branche, comme au numéro 9 de l'Analyse, cette version fonctionne mais contient de la répétition):

nombre: int = -1

print(nombre)

if nombre > 0:
print("est positif")
elif nombre < 0:
print("est négatif")
else:
print("est égal à zéro")

Numéro 4​

nombre: int = 50
jour: str

if nombre == 1:
jour = "dimanche"
elif nombre == 2:
jour = "lundi"
elif nombre == 3:
jour = "mardi"
elif nombre == 4:
jour = "mercredi"
elif nombre == 5:
jour = "jeudi"
elif nombre == 6:
jour = "vendredi"
elif nombre == 7:
jour = "samedi"
else:
jour = "-"

print(nombre)
print(jour)

Numéro 5​

titre: str = "N"
prenom: str = "Fred"
nom: str = "Groleau"
salutation: str

if titre == "M" or titre == "m":
salutation = "Bonjour monsieur"
elif titre == "F" or titre == "f":
salutation = "Bonjour madame"
else:
salutation = "Bonjour"

print(salutation)
print(prenom)
print(nom)

Numéro 6​

TAUX_TAXES: float = 0.14975

montant: float = 100
rabais: float
montantApresRabais: float
prixFinal: float

if montant >= 100:
rabais = montant * 0.10
elif montant >= 50:
rabais = 5
else:
rabais = 0

montantApresRabais = montant - rabais
prixFinal = montantApresRabais * (1 + TAUX_TAXES)

print(prixFinal)

Numéro 7​

joueur1: str = "r"
joueur2: str = "p"
resultat: str

if joueur1 == joueur2:
resultat = "Égalité"
elif (joueur1 == "r" and joueur2 == "c") or (joueur1 == "c" and joueur2 == "p") or (joueur1 == "p" and joueur2 == "r"):
resultat = "Joueur 1 gagne"
else:
resultat = "Joueur 2 gagne"

print(resultat)

Analyse​

Numéro 9​

Le code fonctionne correctement, mais les lignes print("Voici votre billet:") et print(prix) sont répétées dans les deux branches. Puisqu'elles s'exécutent peu importe la valeur de etudiant, elles peuvent sortir du if:

etudiant: bool = True
prix: float = 12

if etudiant:
prix = prix - 3

print("Voici votre billet:")
print(prix)

Numéro 10​

Le code contient une erreur de logique dans la condition du elif pour Atome: age > 10 and age < 9 est impossible (aucun nombre n'est à la fois plus grand que 10 et plus petit que 9), cette branche ne s'exécute donc jamais. Un jeune de 9 ou 10 ans tombe dans le else au lieu d'être catégorisé Atome. La condition devrait être age >= 9 and age <= 10.

Numéro 11​

Le code ne vérifie qu'une seule des 3 conditions nécessaires pour valider un triangle. Avec a = 10, b = 3, c = 4, la condition a + b > c est vraie (13 > 4), le code affiche donc "Triangle valide", mais c'est faux puisque b + c (7) n'est pas plus grand que a (10). Il manque les 2 autres vérifications:

a: int = 10
b: int = 3
c: int = 4

if a + b > c and a + c > b and b + c > a:
print("Triangle valide")
else:
print("Triangle invalide")