Exercice Corrigé: Gestion des exceptions en Python

Avec des exercices corrigés en Python, vous pratiquerez divers concepts du langage Python. Vous commencerez par des exercices Python de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
 
 

Exercice 1:

Écrire un programme Python pour gérer une exception ZeroDivisionError lors de la division d’un nombre par zéro.

Exemple:

10/2 -> 5
10/0 -> La division par zéro n'est pas autorisée.
Solution:

def division(x, y):
    try:
        res = x / y
        print("Résultat:", res)
    except ZeroDivisionError:
        print("La division par zéro n'est pas autorisée.")

division(10, 0)

Sortie:

La division par zéro n'est pas autorisée.

Explication:

La fonction « division() » prend deux paramètres, x et y, représentant respectivement le numérateur et le dénominateur. Le bloc Try de la fonction tente d’effectuer l’opération de division x / y. Si l’opération de division réussit, le résultat est affiché. En revanche, si une exception ZeroDivisionError survient parce que le dénominateur y est nul, le programme passe au bloc except. Le bloc except affiche un message d’erreur indiquant que la division par zéro n’est pas autorisée.

 

Exercice 2:

Écrivez un programme Python qui invite l’utilisateur à saisir un nombre entier et qui lève une exception ValueError si le nombre saisi n’est pas un nombre entier valide.

Exemple:

Saisir un nombre entier:
x
Erreur: Entrer un entier valide.
Solution:

try:
    n = int(input("Saisir un nombre entier:"))
    print("Valeur d'entrée:", n)
except ValueError:
    print("Erreur: Entrer un entier valide.")

Sortie:

Saisir un nombre entier:
x
Erreur: Entrer un entier valide.

Explication:

Dans le bloc try, nous utilisons la fonction int() pour convertir l’entrée de l’utilisateur en un entier. Si la conversion réussit, nous renvoyons la valeur entière.

Si la conversion échoue et qu’une exception ValueError est levée, le programme passe au bloc except. Dans le bloc except, nous capturons l’exception ValueError et nous affichons un message d’erreur indiquant que l’entrée n’est pas valide.

 

Exercice 3:

Écrivez un programme Python qui ouvre un fichier et gère une exception FileNotFoundError si le fichier n’existe pas.

Exemple:

Erreur : Fichier non trouvé.
Solution:

try:
    filename = 'test.txt'
    # Essayez d'ouvrir le fichier spécifié en mode lecture ('r').
    file = open(filename, 'r')
    # Lire le contenu du fichier et le stocker dans la variable str
    str = file.read()
    print("Contenu du fichier:")
    # Affiche le contenu du fichier.
    print(str)
    # Fermez le fichier pour libérer les ressources du système.
    file.close()
except FileNotFoundError:
    print("Erreur : Fichier non trouvé.")

Sortie:

Erreur : Fichier non trouvé.

Explication:

Si le fichier existe et peut être ouvert avec succès, nous lisons son contenu et nous l’affichons. Enfin, nous fermons le fichier.

Toutefois, si une exception FileNotFoundError survient parce que le fichier n’existe pas, le programme passe au bloc except. Dans le bloc except, nous traitons l’exception en affichant un message d’erreur indiquant que le fichier n’a pas été trouvé.

 

Exercice 4:

Ecrivez un programme Python qui invite l’utilisateur à saisir deux nombres et qui lève une exception TypeError si les entrées ne sont pas numériques.

Exemple:

Saisir le 1er nombre:
a
Erreur: Veuillez saisir un nombre valide.
Solution:

try:
	n1 = float(input("Saisir le 1er nombre:"))
	n2 = float(input("Saisir le 2éme nombre:"))
	res = n1 + n2
	print("Somme de ces deux nombres", res)
except ValueError:
    print("Erreur: Veuillez saisir un nombre valide.")

Sortie:

Saisir le 1er nombre:
a
Erreur: Veuillez saisir un nombre valide.

Explication:

Le programme passe au bloc except si la conversion échoue et qu’une exception ValueError est levée. Dans le bloc except, nous capturons l’exception ValueError et affichons un message d’erreur indiquant que l’entrée n’est pas valide.

 

Exercice 5:

Écrire un programme Python qui ouvre un fichier et gère une exception PermissionError en cas de problème de permission.

Exemple:

Erreur : Permission refusé d'ouvrir le fichier.
Solution:

try:
	filename = "test.txt"
	# Essayer d'ouvrir le fichier spécifié en mode écriture ('w') à l'aide d'une instruction 'with'.
	with open(filename, 'w') as file:
		# Essayer de lire le contenu du fichier, mais ce code ne sera pas exécuté car le fichier est ouvert en mode écriture.
		str = file.read()
		print("Contenu du fichier:")
		print(str)
except PermissionError:
    print("Erreur : Permission refusé d'ouvrir le fichier.")

Sortie:

Erreur : Permission refusé d'ouvrir le fichier.

Explication:

Immédiatement après l’ouverture du fichier, on tente de lire son contenu à l’aide de la méthode read. Cette tentative n’est pas valable car le fichier a été ouvert en mode écriture, ce qui ne permet pas la lecture.

Si le code atteint le bloc except, cela signifie qu’il y a eu une PermissionError lors de l’ouverture du fichier en raison d’un problème de permission. Dans ce cas, un message d’erreur est affiché, indiquant que l’autorisation d’ouvrir le fichier est refusée.

 

Exercice 6:

Écrire un programme Python qui exécute une opération sur une liste et gère une exception IndexError si l’index est en dehors de la plage.

Exemple:

Erreur: L'index est en dehors de la plage.
Solution:

try:
	data = [1, 2, 3, 4, 5]
	# Essaiez d'accéder à un élément inexiste
	result = data[20]
	print("Résultat:", result)
except IndexError:
	print("Erreur: L'index est en dehors de la plage.")

Sortie:

Erreur: L'index est en dehors de la plage.

Explication:

Si l’index est en dehors de la plage et qu’une exception IndexError se produit, le programme passe au bloc except.

 

Exercice 7:

Écrivez un programme Python qui invite l’utilisateur à saisir un nombre et qui gère une exception KeyboardInterrupt si l’utilisateur annule la saisie.

Exemple:

Saisir un nombre:
Saisie annulée par l'utilisateur.
Solution:

try:
    n = int(input("Saisir un nombre: "))
    # Si la saisie de l'utilisateur est convertie avec succès en un nombre entier, afficher le nombre saisi.
    print("Vous avez saisi:", n)
# Handle the KeyboardInterrupt exception, which occurs when the user cancels the input (typically by pressing Ctrl+C).
except KeyboardInterrupt:
    print("Saisie annulée par l'utilisateur.")

Sortie:

Saisir un nombre:
Saisie annulée par l'utilisateur.

Explication:

Si l’utilisateur réussit à saisir un nombre, le programme passe à la ligne suivante, où il affiche le nombre saisi. Toutefois, si l’utilisateur annule la saisie en appuyant sur Ctrl+C (KeyboardInterrupt), le programme passe au bloc except. Nous capturons l’exception KeyboardInterrupt dans le bloc except et affichons un message d’erreur informant l’utilisateur que la saisie a été annulée.

 

Exercice 8:

Écrire un programme Python qui exécute une division et gère une exception ArithmeticError en cas d’erreur arithmétique.

Exemple:

Erreur: Une erreur arithmétique s'est produite!
Solution:

def division(x, y):
    try:
        res = x / y
        print("Résultat:", res)
    except ArithmeticError:
        print("Erreur: Une erreur arithmétique s'est produite!")

division(10, 0)

Sortie:

Erreur: Une erreur arithmétique s'est produite!

Explication:

Si une erreur arithmétique se produit pendant la division, par exemple une division par zéro, une exception ArithmeticError est levée. Nous capturons l’exception ArithmeticError dans le bloc except et nous affichons un message d’erreur indiquant qu’une erreur arithmétique s’est produite.

 

Exercice 9:

Écrire un programme Python qui exécute une opération de liste et gère une exception AttributeError si l’attribut n’existe pas.

Exemple:

Erreur: La liste n'a pas d'attribut length.
Solution:

try:
	l = [1, 2, 3, 4, 5]
	# Essayer d'accéder à l'attribut 'length' de la liste 'l' et de l'affecter à 'r'.
	r = l.length  # Essayer d'accéder à l'attribut length
	print("Longueur de la liste:", r)
except AttributeError:
	print("Erreur: La liste n'a pas d'attribut length.")

Sortie:

Erreur: La liste n'a pas d'attribut length.

Explication:

Si on utilise la fonction len() le programme s’exécute avec succès, il affiche la longueur de la liste. Toutefois, si une exception AttributeError survient parce que la liste ne possède pas d’attribut length, le programme passe au bloc except. Dans ce bloc, nous attrapons l’exception AttributeError et affichons un message d’erreur indiquant que la liste n’a pas d’attribut length.

 

Éditeur de code Python: Testez votre code en ligne!


 
QCM Python

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *