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")