Aller au contenu principal

Corrigé - Atelier 12 - Exceptions

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

Compréhension​

Numéro 1​

A
C
D

Numéro 2​

Pas d'erreur
Fin

Numéro 3​

B
C

Pratique​

Numéro 4​

nombre1: float
nombre2: float
reponse: float

nombre1 = float(input("Veuillez choisir le nombre 1: "))
nombre2 = float(input("Veuillez choisir le nombre 2: "))

try:
reponse = nombre1 / nombre2
except ZeroDivisionError:
reponse = 0

print(f"La réponse est: {reponse}")

Numéro 5​

nbProduits: int = 0
prixUnitaire: float = 0.00
sousTotal: float
tps: float
tvq: float
total: float
entree: str

while nbProduits <= 0:
entree = input("Veuillez entrer un nombre de produits: ")
try:
nbProduits = int(entree)
except ValueError:
print("Ce n'est pas un nombre valide")
else:
if nbProduits <= 0:
print("Le nombre de produits doit être plus grand que zéro")

while prixUnitaire <= 0:
entree = input("Veuillez entrer un prix unitaire: ")
try:
prixUnitaire = float(entree)
except ValueError:
print("Ce n'est pas un nombre valide")
else:
if prixUnitaire <= 0:
print("Le prix unitaire doit être plus grand que zéro")
elif round(prixUnitaire, 2) != prixUnitaire:
print("Le prix ne peut pas avoir plus de 2 décimales")
prixUnitaire = 0

sousTotal = round(nbProduits * prixUnitaire, 2)
tps = round(sousTotal * 0.05, 2)
tvq = round(sousTotal * 0.09975, 2)
total = sousTotal + tps + tvq

print(f"\nSous-total: {sousTotal:.2f}\nTPS: {tps:.2f}\nTVQ: {tvq:.2f}\nTotal: {total:.2f}")

Numéro 6​

entree: str
nombre: int

nombre = 0
while nombre < 1 or nombre > 10:
entree = input("Entrez un nombre entre 1 et 10: ")
try:
nombre = int(entree)
except ValueError:
print("Ce n'est pas un nombre entier valide")
else:
if nombre < 1:
print("Le nombre doit être supérieur ou égal à 1")
elif nombre > 10:
print("Le nombre doit être inférieur ou égal à 10")

print(f"Vous avez entré: {nombre}")

Numéro 7​

nombre1: str
nombre2: str
n1: float
n2: float
reponse: float

nombre1 = input("Veuillez choisir le nombre 1: ")
nombre2 = input("Veuillez choisir le nombre 2: ")

try:
n1 = float(nombre1)
n2 = float(nombre2)
reponse = n1 / n2
except ValueError:
print("Un des nombres entrés n'est pas valide")
except ZeroDivisionError:
print("Impossible de diviser par zéro")
else:
print(f"La réponse est: {reponse}")

Analyse​

Numéro 8​

Seul int(input(...)) peut lever une exception (ValueError), le reste du code ne devrait donc pas être dans le try. En utilisant un else, le code qui dépend de la conversion réussie reste regroupé, tout en gardant le try minimal:

age: int

try:
age = int(input("Quel âge avez-vous? "))
except ValueError:
print("Ce n'est pas un nombre valide")
else:
print("Vous êtes " + ("majeur" if age >= 18 else "mineur"))
print("Merci d'avoir répondu")